-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块,为什么不直接设置一个表示它是否应该被执行的布尔值? –