基本上,我不太确定finally关键字的正确用法是什么,我只知道文本定义:保证代码将被执行,因为有时它不会执行。所以我希望我能在这个特定的代码中获得一些指导:
另外,如果不需要调用InputStream#close()
的try-catch
块
try {
inputStream = entity.getContent();
BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder sb = new StringBuilder();
String line = null;
while((line = br.readLine()) != null) {
sb.append(line);
sb.append("\n");
}
responseText = sb.toString();
} catch(IOException e) {
e.printStackTrace();
} finally {
if (inputStream != null) {
try {
inputStream.close();
} catch(IOException e) {
e.printStackTrace();
}
}
}
发布于 2014-02-21 20:13:25
您也可以使用try-with-resources。
如下所示:
try (YourResource resource) {
//Todo...
} catch(YourSpecificException ex) {
//Todo...
}
在退出构造时,在两个段落之间声明的资源将自动关闭。
你甚至可以一次声明多个资源,用分号分隔它们。所有这些都在上面的链接中,真的。
发布于 2014-02-21 20:10:14
无论异常是由try
块引起的,还是将not.So finally
块用作post activity.In您用来关闭流的代码,都将始终执行finally
块。
发布于 2014-02-21 20:11:58
finally块确保无论在try期间发生什么(成功或异常),它都将始终运行。这通常在清理资源时使用,如InputStream
或Socket
try with resource
范例清除了这一点,但会自动关闭Closeable
类型的内容
try( InputStream inputStream = entity.getContent() )
{
}catch(Exception e)
{
}//declared resource in try automatically closed
http://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html
https://stackoverflow.com/questions/21944180
复制