我从来没有正确地理解finally语句的用法。谁能告诉我这两者的区别是什么:
try {
a;
block;
off;
statements;
} catch (Exception e) {
handle;
exception;
e;
} finally {
do;
some;
cleanup;
}一方面,还有:
try {
a;
block;
off;
statements;
} catch (Exception e) {
handle;
exception;
e;
}
do;
some;
cleanup;在另一端
发布于 2010-08-01 05:46:04
它们在以下情况下有所不同
try--block通过抛出一个不是java.lang.Throwable的java.lang.Exception来完成,例如,因为它是一个java.lang.Error,例如AssertionError或OutOfMemoryError.
continue、break或return
continue、break或return
更普遍的是,java语言保证在try语句完成之前执行finally块。(请注意,如果try-语句没有完成,则不能保证最终。语句可能由于各种原因而无法完成,包括硬件关闭、OS关闭、VM关闭(例如,由于System.exit)、线程正在等待(Thread.suspend()、synchronized、Object.wait()、Thread.sleep())或正处于忙碌状态(无限循环、)。
因此,finally块比方法体的末尾更适合清理操作,但就其本身而言,仍然不能保证清理的执行。
发布于 2010-07-29 00:02:20
finally块始终执行。
finally块用于清理,比如释放try/catch中使用的资源,关闭数据库连接,关闭套接字等。即使在try/catch块中发生了未处理的异常。
finally块唯一不执行的时候是在try/catch中调用system.exit()时,或者发生了一些错误而不是异常。
上述描述中的错误是指Java应用程序退出时出现诸如内存不足错误等情况。我看到了一些负面影响:(由于这个原因,它似乎。
发布于 2010-07-29 00:02:22
主要区别在于,catch部分本身可能抛出异常,打破周围的块,或者从当前方法返回。在这种情况下,不会执行do; some; cleanup;。
使用finally块,可以保证该代码将被执行。
https://stackoverflow.com/questions/3354823
复制相似问题