springmvc的异常处理
时间: 2023-07-13 16:28:20 浏览: 103
springmvc 异常统一处理的三种方式详解.docx
SpringMVC框架提供了强大的异常处理机制,可以帮助开发者处理应用程序中的各种异常。具体实现方式如下:
1. 使用@ControllerAdvice注解实现全局异常处理
可以在@ControllerAdvice注解标注的类中实现全局异常处理,对应的异常处理方法需要使用@ExceptionHandler注解标注。例如,下面的代码实现了对所有RuntimeException异常的全局处理:
```java
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(RuntimeException.class)
public ModelAndView handleRuntimeException(HttpServletRequest request, RuntimeException ex) {
ModelAndView mav = new ModelAndView();
mav.addObject("exception", ex);
mav.addObject("url", request.getRequestURL());
mav.setViewName("error");
return mav;
}
}
```
2. 在@Controller注解标注的类中实现局部异常处理
也可以在@Controller注解标注的类中实现局部异常处理,对应的异常处理方法也需要使用@ExceptionHandler注解标注。例如,下面的代码实现了对所有NumberFormatException异常的局部处理:
```java
@Controller
@RequestMapping("/user")
public class UserController {
@ExceptionHandler(NumberFormatException.class)
public ModelAndView handleNumberFormatException(HttpServletRequest request, NumberFormatException ex) {
ModelAndView mav = new ModelAndView();
mav.addObject("exception", ex);
mav.addObject("url", request.getRequestURL());
mav.setViewName("error");
return mav;
}
@RequestMapping("/add")
public String addUser(@RequestParam("id") int id) {
// do something
return "success";
}
}
```
3. 使用SimpleMappingExceptionResolver实现异常处理
还可以使用SimpleMappingExceptionResolver类实现异常处理,该类可以根据异常类型和异常映射表将异常转化为对应的视图。例如,下面的代码实现了对所有RuntimeException异常的处理:
```java
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<prop key="java.lang.RuntimeException">error</prop>
</props>
</property>
</bean>
```
总之,SpringMVC框架提供了多种方式来实现异常处理,开发者可以根据实际需求选择合适的方式来实现。
阅读全文