SpringMVC 的三种异常处理方式详解
Spring MVC 提供了三种处理异常的方式:
- 使用
@ControllerAdvice
和@ExceptionHandler
注解 - 实现
HandlerExceptionResolver
接口 - 使用 XML 配置
下面是每种方式的示例代码:
- 使用
@ControllerAdvice
和@ExceptionHandler
注解:
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
@ResponseBody
public String handleException(Exception e) {
// 处理异常并返回响应
return "An error occurred: " + e.getMessage();
}
}
- 实现
HandlerExceptionResolver
接口:
public class CustomExceptionResolver implements HandlerExceptionResolver {
@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
// 处理异常并返回ModelAndView
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("error", ex.getMessage());
modelAndView.setViewName("errorView");
return modelAndView;
}
}
- 使用 XML 配置:
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="defaultErrorView" value="errorView"/>
<property name="exceptionAttribute" value="ex"/>
<property name="exceptionMappings">
<props>
<prop key="Exception">errorView</prop>
</props>
</property>
</bean>
在实际开发中,通常使用@ControllerAdvice
和@ExceptionHandler
注解,因为它更加简洁和现代化,同时也支持注解驱动的方式。
评论已关闭