/**
* 1. 异常介绍
* Throwable:是所有Java程序中错误处理的父类,有两个子类:Error、Exception。
* Error:表示由 JVM 所侦测到的无法预期的错误,由于这是属于 JVM 层次的严重错误,导致JVM 无法继续执行,因此,这是不可捕捉到的,无法采取任何恢复的操作,顶多只能显示错误信息。
* Exception:表示可恢复的例外,这是可捕捉到的。
* (1) 运行时异常:都是 RuntimeException 类及其子类异常,如 NullPointerException(空指针异常)、IndexOutOfBoundsException(下标越界异常)等,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。运行时异常的特点是 Java 编译器不会检查它,也就是说,当程序中可能出现这类异常,即使没有用 try-catch 语句捕获它,也没有用 throws 子句声明抛出它,也会编译通过。
* (2) 非运行时异常 (编译异常):是 RuntimeException 以外的异常,类型上都属于 Exception 类及其子类。从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过。如 IOException、SQLException 等以及用户自定义的 Exception 异常,一般情况下不自定义检查异常。
*
* 2. 异常类定义
* 继承RuntimeException,实现其方法
*
* 3. SpringMVC统一异常处理思路
* 使用 SpringMVC 之后,代码的调用者是 SpringMVC 框架,也就是说最终的异常会抛到框架中, 然后由框架指定异常处理类进行统一处理。
* 方式一:创建一个自定义异常处理器(实现HandlerExceptionResolver接口),并实现里面的异常处理方法,然后将这个类交给 Spring 容器管理
* 方式二:在类上加注解(@ControllerAdvice)表明这是一个全局异常处理类在方法上加注解(@ExceptionHandler),在 ExceptionHandler 中有一个 value 属性, 可以指定可以处理的异常类型
*/
@Slf4j
@RestControllerAdvice
public class ExceptionAdvice {
@ExceptionHandler
public ResponseEntity handleException(Exception e) {
log.error("系统异常", e);
return ResponseEntity.status(500).body(ErrorResult.error());
}
![image]()