springboot全局异常处理
时间: 2023-06-19 15:06:14 浏览: 99
在 Spring Boot 中,可以通过实现 ExceptionHandler 来处理全局异常。具体步骤如下:
1. 创建一个自定义异常类。例如:
```
public class MyException extends RuntimeException {
private Integer code;
private String message;
public MyException(Integer code, String message) {
super(message);
this.code = code;
this.message = message;
}
public Integer getCode() {
return code;
}
public String getMessage() {
return message;
}
}
```
2. 创建一个全局异常处理器类,用于捕获所有异常并处理。例如:
```
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(MyException.class)
@ResponseBody
public Result<Object> handleMyException(MyException e) {
return ResultUtil.error(e.getCode(), e.getMessage());
}
@ExceptionHandler(Exception.class)
@ResponseBody
public Result<Object> handleException(Exception e) {
return ResultUtil.error(-1, e.getMessage());
}
}
```
3. 在上面的代码中,@ControllerAdvice 注解表示这是一个全局异常处理器类。@ExceptionHandler 注解用于指定处理的异常类型,@ResponseBody 注解表示返回结果为 JSON 格式。
4. 最后,在业务代码中抛出自定义异常即可,例如:
```
@GetMapping("/user/{id}")
public User getUser(@PathVariable Integer id) {
if (id == null) {
throw new MyException(400, "参数错误");
}
User user = userService.getUser(id);
if (user == null) {
throw new MyException(404, "用户不存在");
}
return user;
}
```
这样,当业务代码中抛出自定义异常时,全局异常处理器会捕获该异常并进行处理,返回一个 JSON 格式的错误信息。