Try Catch Finally 中Finally的代码在什么时候不被执行

Posted tomclock

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Try Catch Finally 中Finally的代码在什么时候不被执行相关的知识,希望对你有一定的参考价值。

近日执行一段陈旧的代码,一个Batch执行EXE,每日无限循环。

唯一可以停掉该Batch的方法,就是直接将进程杀掉,或者在Batch的CMD窗口关掉X按钮。

 而后,进程中永远都会增加一个Excel的执行进程。 必须手动关闭。 

 想来十分愚蠢,但细读元代码后,发现在处理中有Try Catch Finally 的语句。但其Finally中

原本希望的执行的,关掉Excel进程的部分,并没有正常执行。

细读http://thedailywtf.com/articles/My-Tales后。

 

归结为:

在采取杀死进程(包括点击X按钮,Application.Exit()), 关电源, 以及系统内存泄漏等异常情况下, Finally 中

的语句不会被执行。只有正常的异常,比如文件不存在,数据库断连接等系统可预测级别的异常,才会进入Finally

因此,考虑Finally的执行语句时, 需要慎重考虑。

以上是关于Try Catch Finally 中Finally的代码在什么时候不被执行的主要内容,如果未能解决你的问题,请参考以下文章

Java中try catch finally语句中含有return语句的执行情况

Java中try catch finally语句中含有return语句的执行情况

Java中try catch finally语句中含有return语句的执行情况(总结版)

java_try,catch,finally return之间的执行顺序

转case: Java中try catch finally语句中含有return语句的执行情况(总结版)

Java语法细节 - try_finally和set相关