gpt4 book ai didi

java - Spring 异常消息?它是什么?

转载 作者:行者123 更新时间:2023-11-30 06:36:20 24 4
gpt4 key购买 nike

我认为这个问题对于异常是通用的,但让我们使用我的例子。

成功登录后,我有以下用于“用户主页”页面的简单 Controller 。

@Controller
@RequestMapping("/user-home")
public class UserHomeController {

private static Log log = LogFactory.getLog(UserHomeController.class);

@RequestMapping(method = RequestMethod.GET)
public String getUserHome(HttpServletRequest request) {

if (request.getSession(false) == null) {
throw new UnauthorizedClientException("Could not authenticate request. There is no session present for this request.");
} else {
return "user_home";
}
}

@ResponseStatus(HttpStatus.NOT_FOUND)
@ExceptionHandler({UnauthorizedClientException.class})
public void handle404() {
log.info("An UnauthorizedClientException was thrown inside UserHomeController.");
}
}

因此,它有效,即当不存在 session 时我得到默认的 404 页面,但是我传递到 UnauthorizedClientException 的消息无处可寻。 404 页面有“Message:”,后面什么也没有。

我的消息去了哪里?传递给异常构造函数的消息的目的通常是什么?

最佳答案

您误解了 UnauthorizedClientException 的用途。它不是用来为您呈现页面的,它只是用于内部控制流。

当您抛出该异常时,Spring 会捕获它,并将其传递给 handle404() 方法。此方法反过来负责相应地处理异常。

@ExceptionHandler 注释方法在几乎所有方面都与 @RequestMapping 方法一样。这意味着如果要发生任何有用的事情,他们必须返回 View 和模型。

但是,您的方法所做的只是将异常消息记录到其内部记录器,然后返回。它不返回 View ,因此默认错误页面不会呈现任何异常;并且它不返回模型,因此不显示任何消息。

您需要将您的 handle404() 方法更改为 (a) 返回您要呈现的 JSP 的名称,以及 (b) 将适当的消息添加到模型中。

关于java - Spring 异常消息?它是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4986089/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com