终于在try catch / finally语句除外的意义是什么?
多年来,我在很多语言中都使用过try-catch / except-finally变体,但今天有人问我最后是什么意思,我无法回答。
基本上,你为什么最后要发表一个声明,而不是把它放在整个try-catch块之后? 换句话说,下面的代码块有区别:
try{ //a}
catch {//b}
finally {//c}
try{//a}
catch{//b}
//c
编辑:
人们,我知道终于做了什么,我已经使用了很多年了,但我的问题是在上面的例子中, //c
最终似乎是多余的,不是吗?
finally
块的目的是为了确保代码在三种情况下运行,这些情况不会很干净地只用“catch”块处理:
可以在每次return
或抛出之前复制finally
代码,并将catch
块封装在自己的try / catch中以允许发生意外异常的可能性,但是放弃所有这些并简单地使用finally
块更容易。
顺便说一句,我希望语言设计师将包括的一件事情是finally
块的exception
参数,以处理在异常之后需要清理但仍希望它渗透调用堆栈的情况(例如,可以包装在这样的构造中构造函数的代码,以及如果构造函数将以异常退出,则在建造中Dispose
该对象)。
最后,即使在try块中抛出异常也会执行块。 因此,例如,如果您之前打开过流,则可能需要关闭该流或者引发异常。 最后,block对于这样的问题很有用。
Finally
确保即使遇到异常,您的代码也会执行。
finally块可用于清理try块中分配的任何资源,以及运行即使存在异常也必须执行的任何代码
http://msdn.microsoft.com/en-us/library/zwc8s4fz(v=vs.80).aspx
链接地址: http://www.djcxy.com/p/73717.html上一篇: What is the point of finally in a try catch/except finally statement