当最后执行?
这个问题在这里已经有了答案:
The finally block always executes when the try block exits
(单击) The finally block always executes when the try block exits
。
如果使用finally块,则放在try块和它后面的catch块之后。 finally块包含将运行的代码,无论是否在try块中引发异常。 一般的语法如下所示:
public void someMethod{
Try {
// some code
}
Catch(Exception x) {
// some code
}
Catch(ExceptionClass y) {
// some code
}
Finally{
//this code will be executed whether or not an exception
//is thrown or caught
}
}
这里有四种潜在的情况:
try块运行到最后,并且不会抛出异常。 在这种情况下,finally块将在try块后执行。
try块中引发了一个异常,然后将其捕获到其中一个catch块中。 在这种情况下,finally块将在catch块执行后立即执行。
在try块中抛出一个异常,并且在该方法中没有可以捕获异常的匹配catch块。 在这种情况下,对该方法的调用将结束,并将异常对象抛出到封闭方法 - 就像try-catch-finally块驻留的方法一样。 但是,在方法结束之前,finally块会被执行。
在try块运行完成之前,它返回到调用该方法的任何地方。 但是,在它返回到调用方法之前,finally块中的代码仍然执行。 所以,请记住finally块中的代码仍然会被执行,即使try块中有某个返回语句。
更新:无论try或catch块发生了什么(失败,返回,异常,完成等),最终都会被执行。
是的,最后总是执行。 除了例外和没有例外。
这是确保代码的一部分始终执行的方式。
例如,用来处理对象,关闭已打开的服务器连接和那种东西。
从oracle检查这个链接:
http://docs.oracle.com/javase/tutorial/essential/exceptions/finally.html
链接地址: http://www.djcxy.com/p/73697.html