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中)