Ali*_*Ali 65 exception-handling finally
我已经使用了多种语言的try-catch/except-finally变种多年,今天有人问我最后的意思是什么,我无法回答.
基本上为什么你会在最后一个语句中放入一个语句,而不是仅仅将它放在整个try-catch块之后?或者换句话说,以下代码块之间存在差异:
try{ //a}
catch {//b}
finally {//c}
try{//a}
catch{//b}
//c
Run Code Online (Sandbox Code Playgroud)
编辑:人
,我知道最后做了什么,我已经使用了很长时间,但我的问题是在上面的例子中放入//c最后似乎多余,不是吗?
sup*_*cat 90
finally块的目的是确保代码在三种情况下运行,而这些情况不会仅仅使用"catch"块来处理:
可以finally在每次return抛出之前复制代码,并catch在自己的try/catch中包装块以允许发生意外异常的可能性,但是放弃所有这些并简单地使用finally块要容易得多.
顺便说一下,我希望语言设计者会包含的一件事就是exception对finally块的一个参数,以处理在异常之后需要清理但仍希望它渗透调用堆栈的情况(例如,可以包装代码这样一个构造中的构造函数,以及Dispose构造函数将以异常退出的构造对象).
| 归档时间: |
|
| 查看次数: |
6943 次 |
| 最近记录: |