throw exception和 try catch的区别
-
throw exception直接终止方法,或者退出循环。
-
try catch还要继续处理方法余下的逻辑,或者不结束循环。
-
try catch 不中断,throw exception中断。
-
try{}catch(){}他的处理模式是当try中出现异常时,就直接跳转到catch中进行处理,而不是向客户端直接报错。
-
而在catch中:
-
我们可以进行异常类型转型等一些操作,再throw出去,让他的调用者处理。他可以抛出一个编译时异常,也可以抛出一个运行时异常。此时程序终止。
-
也可以在catch中对异常进行处理,处理完后在继续运行以后的代码,而不是直接终止。
。
对于异常有两种处理方法
-
要么声明异常,也就是在方法名后面加上throws exceptionname,…,方法本身只是抛出异常,由函数调用者来捕获异常。若产生异常,异常会沿着调用栈下移,一直找到与之匹配的处理方法,若到达调用栈底仍未找到,程序终止。
-
要么捕获异常。通过try catch方法,catch子句中放置处理异常的语句。
全局异常处理类的一些知识点
- @ControllerAdvice 注解是 Spring Boot 用于捕获 @Controller层系统抛出的异常(如果已经编写了 try-catch 且在 catch 模块中没有使用 throw 抛出异常, 则@ControllerAdvice 捕获不到异常)。
- 进入Controller层的错误才会由@ControllerAdvice处理,拦截器抛出的错误以及访问错误地址的情况@ControllerAdvice处理不了,由SpringBoot默认的异常处理机制处理。