springmvc异常处理
时间: 2023-07-17 22:57:46 浏览: 155
在Spring MVC中处理异常可以通过以下几种方式:
1.@ControllerAdvice注解定义一个全局的异常类,可以通过@ExceptionHandler注解来处理指的异常类型。在该类中可以定义多个方法来处理不同类型的异常,并返回相应错误信息或者跳转到指定的错误页面```java
@ControllerAdvice
public class Global {
@ExceptionHandler(Exception.class)
public ModelAndView handleException(Exception ex) {
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("errorMessage", ex.getMessage());
modelAndView.setViewName("error");
return modelAndView;
}
@ExceptionHandler(NotFoundException.class)
public ModelAndView handleNotFoundException(NotFoundException ex) {
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("errorMessage", ex.getMessage());
modelAndView.setViewName("notFoundError");
return modelAndView;
}
}
```
2. 在Controller中使用@ExceptionHandler注解来处理局部的异常,只会对当前Controller中的方法生效。
```java
@Controller
public class UserController {
@ExceptionHandler(UserNotFoundException.class)
public ModelAndView handleUserNotFoundException(UserNotFoundException ex) {
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("errorMessage", ex.getMessage());
modelAndView.setViewName("userNotFoundError");
return modelAndView;
}
@RequestMapping("/user/{id}")
public String getUser(@PathVariable("id") Long id) {
// ...
throw new UserNotFoundException("User not found");
}
}
```
3. 使用@ControllerAdvice和@ResponseBody注解来返回JSON格式的错误信息。
```java
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
@ResponseBody
public ResponseEntity<Map<String, Object>> handleException(Exception ex) {
Map<String, Object> errorResponse = new HashMap<>();
errorResponse.put("errorMessage", ex.getMessage());
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(errorResponse);
}
}
```
以上是几种常见的异常处理方式,你可以根据实际需求选择适合的方式来处理异常。
阅读全文