springmvc异常处理
时间: 2023-07-17 12:57:46 浏览: 98
在Spring MVC中处理异常可以通过以下几种方式:
1. 使用@ControllerAdvice注解定义一个全局的异常处理类,通过@ExceptionHandler注解定义处理异常的方法。这个异常处理类可以捕获所有控制器中抛出的异常,并做相应的处理,例如返回错误页面或者JSON格式的错误信息。
```java
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public ModelAndView handleException(Exception ex) {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("error");
modelAndView.addObject("message", ex.getMessage());
return modelAndView;
}
}
```
2. 在控制器方法中使用@ExceptionHandler注解定义局部的异常处理方法。这种方式适用于只针对某个控制器或者某个控制器方法的异常处理。
```java
@Controller
public class UserController {
@ExceptionHandler(UserNotFoundException.class)
public ModelAndView handleUserNotFoundException(UserNotFoundException ex) {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("error");
modelAndView.addObject("message", ex.getMessage());
return modelAndView;
}
@GetMapping("/users/{id}")
public String getUser(@PathVariable("id") Long id) {
User user = userService.getUserById(id);
if (user == null) {
throw new UserNotFoundException("User not found");
}
return "user";
}
}
```
3. 使用Spring的@ResponseBody注解结合@ExceptionHandler注解,可以返回JSON格式的错误信息。
```java
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
@ResponseBody
public Map<String, Object> handleException(Exception ex) {
Map<String, Object> errorResponse = new HashMap<>();
errorResponse.put("error", true);
errorResponse.put("message", ex.getMessage());
return errorResponse;
}
}
```
以上是几种常见的异常处理方式,根据具体的业务需求和项目情况选择适合的方式来处理异常。
阅读全文