
看到如下代码块
static String readFirstLineFromFileWithFinallyBlock(String path) throws IOException { BufferedReader br = new BufferedReader(new FileReader(path)); try { return br.readLine(); } finally { if (br != null) br.close(); } } 这里为何要有 try finally ?
1 hamasaki1999 2017-08-15 14:47:29 +08:00 他不是已经抛出 IOException 了吗 |
2 georgetso 2017-08-15 14:47:49 +08:00 不需要处理异常,但要做清洁工作的情况。 |
3 microhz 2017-08-15 15:31:40 +08:00 finally 一般做一些必要的资源释放,例如流的关闭和锁的释放。只要不是编译异常,不一定非要 catch |
4 Arthur5 2017-08-15 15:38:48 +08:00 via Android 异常要不直接捕获处理,要不接着往上抛出去。这个方法是直接抛出去了(第一行 throws IOException )所以没有 catch |
5 loryyang 2017-08-15 15:53:00 +08:00 遇到异常不一定需要 catch,也可以往外 throw,让外面去 catch 这里用 try 是为了 finally 释放资源,而不是要 catch |
6 Magic347 2017-08-15 16:49:37 +08:00 补一个深度剖析 finally 语句块的链 https://www.ibm.com/developerworks/cn/java/j-lo-finally/ |
7 JackyBao 2017-08-15 16:55:37 +08:00 via Android br 不会自动释放吗? |
8 ke1e 2017-08-15 16:59:09 +08:00 via Android 一般用于释放资源 |
9 liuzhen 2017-08-15 17:02:29 +08:00 try 块表示可能出异常的代码块 catch 块表示异常出现时怎么处理 finally 块表示不管正常或者异常最终都会执行的代码块 |