使用原汁原味的Java语言 - 非Java原生程序员的语言流畅性 - 编程入门网
, "UTF-8");
} catch (UnsupportedEncodingException e) {
System.err.println("This can''t happen!");
return;
}
BufferedReader buffer = new BufferedReader(reader);
String line;
try {
line = buffer.readLine();
} catch (IOException e) {
System.err.println(e.getMessage());
return;
}
double x;
try {
x = Double.parseDouble(line);
}
catch (NumberFormatException e) {
System.err.println(e.getMessage());
return;
}
System.out.println("Read: " + x);
}
这段代码非常难以阅读,甚至比异常处理取代的 if (errorCondition) 测试 更为难解。流畅的 Java 代码将错误处理与故障点分离开来,不会将错误处理代 码与正常执行流混合在一起。清单 14 中的版本更易于阅读和理解: 清单 14. 保持代码的主执行路线完好
使用原汁原味的Java语言 - 非Java原生程序员的语言流畅性(11)时间:2011-06-10 IBM Elliotte Rusty Harol某些时候,您可能需要使用嵌套的 try-catch 块来分离造成相同异常的不同 故障模式,但这种情况并不常见。主要的实践经验是:如果一个方法中存在多个 try 块,那么就表明方法过于庞大,应拆分为多个较小的方法。 最后,具有各种语言背景、刚刚接触 Java 编程的程序员往往会错误地假设 他们必须在抛出检查异常(checked exception)的方法中捕捉到这些异常。而 抛出异常的方法通常并不是应该负责捕捉异常的方法。例如,考虑如清单 15 所 示的方法: 清单 15. 过早的异常处理
此方法没有足够的信息来处理很有可能发生的 IOException。它并不了解谁 调用了它,也不了解故障的后果。对于此方法来说,惟一合理的举措就是允许 IOException 上行至调用方。编写此方法的正确方式如清单 16 所示: 清单 16. 并非所有异常都需要在第一时间捕捉
简而言之,这更为简单、更容易理解,将错误信息传递给代码中最适合处理 这些信息的部分。 这些问题是否真的那么重要? 这些问题都不是关键问题 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |