全局异常处理类(既要处理全局异常,也要处理自定义异常)
@RestControllerAdvice
@Slf4j
public class MyControllerAdvice {
/**
* 捕捉全局异常并进行处理,当没有写自定义异常的捕捉+处理,那么将会被当作全局异常处理
* @param e
*/
@ExceptionHandler(value = Exception.class)
public void AllException(Exception e){
/**
* 拿到全局异常e
* 下面进行处理
*/
System.out.println(e.getMessage());
}
/**
* 捕捉自定义异常并进行处理
* @param e
*/
@ExceptionHandler(value = MyException.class)
public void myException(MyException e){
System.out.println("捕捉到自定义异常,并进行了处理");
System.out.println(e.getMessage());
}
}
自定义异常
@Data
public class MyException extends RuntimeException {
//错误代码
private Integer code;
//错误消息message
private String message;
public MyException(Integer code, String message) {
this.code = code;
this.message = message;
}
}
分别测试全局的异常和自定义的异常
@RestController
public class ExceptionController {
/**
* 测试全局错误
* @return
* @throws Exception
*/
@RequestMapping("/AllException")
public String TestAllException() throws Exception{
throw new Exception("全局错误");
}
/**
* 测试自定义错误
* @return
* @throws Exception
*/
@RequestMapping("/MyException")
public String TestMyException() throws Exception{
throw new MyException(5000,"自定义错误");
}
}
特别注意,自定义异常也是全局异常的一部分,当没有写自定义异常的捕捉+处理,那么将会被当作全局异常处理