lrl*_*lrl 1 java try-catch-finally try-finally
今天我遇到了一个小问题,我有一段这样的代码,这让我有点不舒服......
try{
//stuff...
} finally {
//finally stuff
}
Run Code Online (Sandbox Code Playgroud)
我想知道这样的实现是否是一个很好的做法,在何时发生异常try并被重新抛给处理它的调用者.这相当于下面的代码吗?
try{
//code....
} catch (Exception e) {
//handling...
} finally {
//finishing up
}
Run Code Online (Sandbox Code Playgroud)
它不等同,因为你已经给出的原因:在第一种情况下仍然抛出异常.并且可能有一些原因,您确实需要这样的行为:关闭资源,例如finally块中的Streams ,但是将异常抛出封闭方法,以便在其他地方处理它.
顺便说一下,你也可以"滥用" try- finally构造,以防万一没有例外:
private StringBuilder buffer = new StringBuilder();
private String getBuffer() {
try {
// return current String content of the buffer
return buffer.toString();
} finally {
// assign a new StringBuilder, before method returns
buffer = new StringBuilder();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
264 次 |
| 最近记录: |