背景
在Java开发中,使用tray catch + finally 组合可执行和抛出异常,方便定位问题,在finally中异步记录日志信息。
功能
1、异常处理机制
如在try中加锁,在finally中解锁
在finally中异步记录日志
原理分析
finally语句一定执行,基于 Java编译器在字节码层面,会生成额外的字节码,将finally中的语句逻辑复制到 try和catch的出口后,只要程序执行,就会走finally的逻辑。
注意:finally语句块的执行是在return语句之前。
失效情况
1、终止JVM
如在 try catch中调用 【system】的exit方法,终止JVM
java
// 手动终止Jvm
System.exit(init);
2、线程终止
在try catch处理线程,调用【Thread】的stop方法
java
// 手动终止线程
Thread.stop();
3、死循环
在try catch 中有死循环,死锁等情况,程序一直执行,最终可能无法进入到finally语句中。
