我想要的是减少从方法中抛出的异常 正如你所看到的,我在外部catch块中有一个内部try catch,以避免抛出异常 这是正常的做法还是有更好(更优雅)的方式? 或者这种方法是完全错误的,我应该抛出异常?
public static String readText(String filename) {
String text = "";
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(filename));
String line = null;
while( (line = br.readLine()) != null ){
text += line;
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(br != null)
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return text;
}
答案 0 :(得分:2)
就我个人而言,Files.readAllLines();
或Files.lines();
采用更现代的方式。
然后您需要处理的只是一个IOException,并且会自动为您清理资源。
答案 1 :(得分:2)
有几种方法可以让您更加简洁:
使用Java 7功能在一个catch中捕获多个异常:
try {...} catch(FileNotFoundException | IOException e) {...}
使用名为try-with-resources的Java 7功能,以便您可以省略finally:
try (BufferedReader br =
new BufferedReader(new FileReader(filename))) {
}
关于抛出异常与否是设计选择:
答案 2 :(得分:1)
如果您使用的是Java 7或更高版本,则可以使用try with resource。
try (BufferedReader br =
new BufferedReader(new FileReader(path))) {
String line = null;
while( (line = br.readLine()) != null ){
text += line;
}
}