Answers:
如果您希望当前执行的方法仍引发异常,同时允许适当地清理资源,则这很有用。下面是处理调用方法中的异常的具体示例。
public void yourOtherMethod() {
try {
yourMethod();
} catch (YourException ex) {
// handle exception
}
}
public void yourMethod() throws YourException {
try {
db.store(mydata);
} finally {
db.cleanup();
}
}
catch
块,finally
则将在该try
块中的任何异常之前执行抛出的异常。因此,如果存在两个例外try
,一个finally
将被抛出,唯一的例外将被抛出finally
。此行为在PHP和Python中是不同的,因为在这些语言中这两种异常将同时抛出,并且异常的顺序是“ try
先是然后是” finally
。
之所以在这里是因为程序员希望确保db.cleanup()
即使try块中的代码引发异常也要调用该方法。该块不会处理任何异常,但是它们只会在执行finally块之后向上传播。
try
是就在那里允许finally
。没有捕获异常。
fopen
或数据库连接(也在PHP中)