Java try catch语法
Java源码被编译为字节码时,会将try catch结构编译为异常表,存储在字节码文件中。
异常表包含可能出现异常的代码起始位置、结束位置,catch块起始位置、可以处理的异常类型等信息。
当程序出现异常时,会查询异常表,构建Exception对象及异常栈信息。
for(){try} 和 try{for()}的区别
程序出现异常的情况下,前者会反复构建Exception对象及异常栈信息,相比后者更影响性能。
另外try块内的代码,受异常逻辑约束,编译为字节码时JVM指令重排受限。
建议避免在循环中使用try catch,同时尽量缩小try catch块范围,寻求两者的平衡。
Spring全局异常处理
在全局异常处理类上,使用@ControllerAdvice注解,为所有Controller类添加异常处理。
在全局异常处理方法上,使用@ExceptionHandler注解,指定处理的异常类型,捕获所有Controller类出现的该类型异常,进行统一处理。