对我来说,两个 try-catch 块使大多数方法都太长了。如果该方法正在做很多事情,它会混淆意图。
准确地说,使用两个 try-catch 块,它至少做了四件事
- 主流的两种情况(两个尝试块)
- 错误处理的两种情况(catch 块)
我宁愿从每个 try-catch 块中制作简短而清晰的方法——比如
private getHostNameFromConfigFile(String configFile, String defaultHostName) {
try {
BufferedReader reader = new BufferedReader(new FileReader(configFile));
return reader.readLine();
} catch (IOException e) {
return defaultHostName;
}
}
public Collection<String> readServerHostnames(File mainServerConfigFile, File backupServerConfigFile) {
String mainServerHostname=getHostNameFromConfigFile(mainServerConfigFile,"default- server.example.org");
String backupServerHostName=getHostNameFromConfigFile(backupServerConfigFile,"default- server.example.ru")
return Arrays.asList(mainServerHostname,backupServerHostName);
}
Robert C. Martin 在“清洁代码”中将其提升到一个新的水平,建议:
如果关键字“try”存在于函数中,它应该是函数中的第一个单词,并且在 catch/finally 块之后应该没有任何内容。
我肯定会用两个单独的 try/catch 块将方法重构为更小的方法。