1. 程式人生 > >Try Catch Finally 中Finally的代碼在什麽時候不被執行

Try Catch Finally 中Finally的代碼在什麽時候不被執行

增加 finall 部分 內存泄漏 無限循環 cmd com 點擊 關閉

近日執行一段陳舊的代碼,一個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的代碼在什麽時候不被執行