书上说:
try所限定的代码中,当抛弃一个例外时,其后的代码不会被执行。通过finally语句可以指定一块代码。无论try所指定的程序块中抛弃或不抛弃例外,也无论catch语句的例外类型是否与所抛弃的例外的类型一致,finally所指定的代码都要被执行,它提供了统一的出口。通常在finally语句中可以进行资源的清除工作。如关闭打开的文件等。
而我想问:
finally既然是用来释放资源的(在出现异常以后),如果代码正确执行那finally就不能够再执行释放资源的代码了,而是要继续。但是事实上finally总是被执行的,这就出现了一个问题,如果代码被正确执行,并没有出现异常,在finally块当中却把需要的资源释放了,这不就错了吗?
请最好给一个例子,先谢谢了。
try所限定的代码中,当抛弃一个例外时,其后的代码不会被执行。通过finally语句可以指定一块代码。无论try所指定的程序块中抛弃或不抛弃例外,也无论catch语句的例外类型是否与所抛弃的例外的类型一致,finally所指定的代码都要被执行,它提供了统一的出口。通常在finally语句中可以进行资源的清除工作。如关闭打开的文件等。
而我想问:
finally既然是用来释放资源的(在出现异常以后),如果代码正确执行那finally就不能够再执行释放资源的代码了,而是要继续。但是事实上finally总是被执行的,这就出现了一个问题,如果代码被正确执行,并没有出现异常,在finally块当中却把需要的资源释放了,这不就错了吗?
请最好给一个例子,先谢谢了。
try {
//执行业务逻辑
} catch(SQLException se) {
//异常处理
} finally {
closeConnection(conn); //释放数据库连接
}
}