gpt4 book ai didi

java - 如何捕获 JSP 文件中的异常?

转载 作者:搜寻专家 更新时间:2023-11-01 02:41:32 25 4
gpt4 key购买 nike

我使用 ExceptionHandler 来捕获 Controller 中的异常。

@ExceptionHandler(value = {Exception.class, RuntimeException.class})
public final ModelAndView globalExceptionHandler(final Exception exception) {
ModelAndView modelAndView = new ModelAndView("error/500");
modelAndView.addObject("tl_exception", errorSystem.processingError(exception));
return modelAndView;
}

但是,例如,如果在 jsp 文件中我想从空对象中获取数据,那是异常而不是 cathcing。

我需要建议,如何在 jsp 文件中捕获异常?或者我只需要在 Controller 中捕获所有错误?

更新:

最好的解决方案是将错误放在 web.xml uri 中。

<error-page>
<location>/error</location>
</error-page>

在创建需要处理请求错误的 Controller 之后:

@Controller
public final class ErrorController {
@RequestMapping(value = "/error")
public final ModelAndView globalErrorHandle(final HttpServletRequest request) {
String page = "error/500";
final String code = request.getAttribute("javax.servlet.error.status_code").toString();
if (null != code && !code.isEmpty()) {
final Integer statusCode = Integer.parseInt(code);
switch (statusCode) {
case 404 : page = "error/404";
case 403 : page = "error/403";
}
}
return new modelAndView(page);
}
}

最佳答案

添加到@astrohome 答案,JSP还为您提供了为每个 JSP 指定错误页面的选项。每当页面抛出异常时,JSP 容器会自动调用错误页面。

要设置错误页面,请使用 <%@ page errorPage="xxx" %>指令。

并且在您上面提到的错误处理 JSP 中包含指令 <%@ page isErrorPage="true" %> .

例如,假设您有一个 JSP 页面名称 main.jsp 您正尝试对其执行空对象操作。

ma​​in.jsp

<%@ page errorPage="show-error.jsp" %>

<html>
<head>
<title>Page on which Error Occurs</title>
</head>
<body>

</body>
</html>

显示错误.jsp

<%@ page isErrorPage="true" %>
<html>
<head>
<title>Show Error</title>
</head>
<body>
<p>Exception stack trace:<% exception.printStackTrace(response.getWriter()); %>
</p>
</body>
</html>

关于java - 如何捕获 JSP 文件中的异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32038288/

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