SpringMVC统一异常处理实例代码
本文主要介绍了SpringMVC统一异常处理实例代码,通过示例代码详细介绍了统一异常处理的方法,对大家的学习或者工作具有一定的参考学习价值。
在项目中,异常处理是一个非常重要的部分。一般来说,系统中异常类型有两种:预期可能发生的异常和运行时异常。预期可能发生的异常可以通过try/catch捕获,向上抛出,而运行时异常只能通过规范代码质量、在系统测试时详细测试等排除。
为了实现统一的异常处理,需要定义异常、异常处理和统一异常处理器。下面是一个系统自定义异常类的示例代码:
```java
public class CustomException extends Exception {
// 异常信息
private String message;
public CustomException(String message){
super(message);
this.message = message;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
```
在上面的代码中,我们定义了一个CustomException类,继承于Exception,用于测试。
在统一异常处理中,需要一个统一异常处理器来处理系统抛出的所有异常。下面是一个实现HandlerExceptionResolver接口的示例代码:
```java
public class CustomExceptionResolver implements HandlerExceptionResolver {
@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
// 输出异常
ex.printStackTrace();
// 统一异常处理代码
// 针对系统自定义的CustomException异常,就可以直接从异常类中获取异常信息,将异常处理在错误页面展示
// 异常信息
String message = null;
CustomException customException = null;
// 如果ex是系统 自定义的异常,直接取出异常信息
if(ex instanceof CustomException){
customException = (CustomException)ex;
}else{
// 针对非CustomException异常,对这类重新构造成一个CustomException,异常信息为“未知错误”
customException = new CustomException("未知错误");
}
// 异常信息
message = customException.getMessage();
request.setAttribute("message", message);
try {
// 转向到错误 页面
request.getRequestDispatcher("/WEB-INF/jsp/error.jsp").forward(request, response);
} catch (ServletException e) {
// TODO
}
}
}
```
在上面的代码中,我们实现了一个统一异常处理器,用于处理系统抛出的所有异常。我们首先输出异常信息,然后根据异常类型来进行处理。如果是系统自定义的CustomException异常,就可以直接从异常类中获取异常信息,将异常处理在错误页面展示;否则,对这类重新构造成一个CustomException,异常信息为“未知错误”。我们将异常信息设置到request中,并转向到错误页面。
本文详细介绍了SpringMVC统一异常处理实例代码,包括定义异常、异常处理和统一异常处理器的实现。这些知识点对大家的学习或者工作具有一定的参考学习价值。
1