-2
A
回答
3
我能想到的唯一的辦法是一個標誌:
bool skipFinally = false;
try
{
DoSomething();
skipFinally = true;
DoSomethingElse();
}
finally
{
if (!skipFinally)
DoFinallyStuff();
}
所以finally
塊字面上得到執行,但你可以決定什麼要做。
但它有一個設計缺陷的氣味。爲什麼在finally
塊中有可能不應該首先執行的代碼?但另一方面:C#編譯器爲迭代器塊生成類似上面的代碼。
相關問題
- 1. 在哪種情況下finally塊不會在客戶端JavaScript中執行?
- 2. 是否有任何情況下finally塊不會被執行?
- 3. 默認情況下不會執行C++
- 4. 原型Ajax.Request在某些情況下不會執行
- 5. 是否有這樣的情況在try \ finally中終止不會被執行?
- 6. 全局運算符在哪些情況下隱藏在C++中?
- 7. Workbook_Open()不會在excel已經運行的情況下執行
- 8. 執行順序和finally塊
- 9. 靜態塊在匿名對象的情況下不會被執行
- 10. 使用node.js模塊,模塊會在什麼情況下執行兩次?
- 11. 如果`try`或`catch`塊中有`return`,`finally`塊會被執行嗎?
- 12. 在哪些情況下Flash/SWF在不同的瀏覽器中行爲不當?
- 13. 哪些內存管理技術在哪些情況下更好?
- 14. 爲什麼finally塊不能執行?
- 15. 在哪些情況下使用定位會比浮動更好?
- 16. 在哪些情況下Oracle會自動創建索引?
- 17. 如果finally塊引發異常,會發生什麼情況?
- 18. 如何在某些情況下使用EF執行刪除行?
- 19. 在哪些情況下應參數被固定執行P時/ Invoke調用
- 20. 停止當前正在運行的線程在某些情況下,finally塊被調用
- 21. 如何在switch語句的某些情況下執行多個代碼塊?
- 22. 在不使用BLOB的情況下執行批處理執行
- 23. SSIS包在不執行邏輯的情況下成功執行
- 24. C#:如何在不停止程序執行的情況下執行線程
- 25. 在哪種情況下運行__init__.py?
- 26. try或catch塊中斷時finally塊不執行
- 27. 「會話」不會在目前情況下
- 28. 在沒有路由的情況下執行Yii模塊
- 29. 佔位符檢查在某些情況下有效,並且在某些情況下不會
- 30. 使用'承諾'與不使用'承諾':在哪些情況下?
通過使用'goto'語句可以有效地跳過它。 – STLDeveloper
你爲什麼想要?還是你有一種最終黑色似乎被跳過的情況?你有代碼示例嗎? – SQB
有一些災難性的故障和本地異常,不會導致finally代碼塊不會被執行。只是爲了說明這一點:不要在程序中將它用於控制流。 **爲什麼**你需要跳過finally塊,爲什麼不直接設置一個表示它是否應該被執行的布爾值? –