异常处理解惑(持续更新…)

36 阅读1分钟

Java try catch语法

Java源码被编译为字节码时,会将try catch结构编译为异常表,存储在字节码文件中。

异常表包含可能出现异常的代码起始位置、结束位置,catch块起始位置、可以处理的异常类型等信息。

当程序出现异常时,会查询异常表,构建Exception对象及异常栈信息。

for(){try} 和 try{for()}的区别

程序出现异常的情况下,前者会反复构建Exception对象及异常栈信息,相比后者更影响性能。

另外try块内的代码,受异常逻辑约束,编译为字节码时JVM指令重排受限。

建议避免在循环中使用try catch,同时尽量缩小try catch块范围,寻求两者的平衡。

Spring全局异常处理

在全局异常处理类上,使用@ControllerAdvice注解,为所有Controller类添加异常处理。

在全局异常处理方法上,使用@ExceptionHandler注解,指定处理的异常类型,捕获所有Controller类出现的该类型异常,进行统一处理。