2、使用HandlerExceptionResolver、SimpleMappingExceptionResolver、@ExceptionHandler三种方式实现异常处理;
时间: 2024-11-06 11:14:12 浏览: 1
Spring MVC中异常处理的三种方式
在Spring MVC框架中,有三种常见的方式用于处理控制器抛出的异常:
1. **HandlerExceptionResolver**: 这是一种通用的方式,Spring MVC会查找所有实现了`HandlerExceptionResolver`接口的处理器。你可以自定义这个接口的实现类,然后注册到Spring容器中,当控制器抛出异常时,Spring会调用这些处理器来处理异常并生成HTTP响应。
```java
public class CustomExceptionHandler implements HandlerExceptionResolver {
@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
// 自定义异常处理逻辑
ModelAndView modelAndView = new ModelAndView("error");
modelAndView.addObject("exception", ex);
return modelAndView;
}
}
```
2. **SimpleMappingExceptionResolver**: 它是一个简单的内置处理器,它可以根据HTTP状态码和异常类型自动映射到特定的视图。只需要配置`mapping`属性,例如设置`500`错误映射到`/error`路径即可。
```xml
<bean id="simpleExceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="defaultErrorView" value="error"/>
</bean>
```
3. **@ExceptionHandler**: 这是注解的方式,直接在Controller方法上应用。当你希望特定类型的异常被某个方法处理时,可以使用`@ExceptionHandler`。这种方法提供了更细粒度的控制,比如针对特定异常类型提供定制处理。
```java
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(value = {MyCustomException.class})
public ResponseEntity<String> handleCustomException(MyCustomException e) {
// 返回错误信息或重定向到其他视图
}
}
```
阅读全文