异常处理体系是Java的优秀之处,而成功的异常处理应该实现下面4个目标: (1)使程序代码混乱最小化; (2)捕获并保留诊断信息; (3)通知合适的人员; (4)采用合适的方式结束异常活动。 为更好地实现上述效果,以下基本准则需要注意: (1)不要过度使用异常。 过度使用异常的两个主要表现: 把异常处理和普通错误混淆在一起,不再编写任何错误处理代码,而是以简单地抛出异常来代替所有的异常处理; 使用异常处理来代替流程控制。 事实上,对完全已知的或者普通的错误应该编写处理错误的代码。只有对外部的、不能确定和预知的运行时错误才使用异常。 (2)不要使用过于庞大的try块。 try块复杂时分析异常的逻辑变得复杂。 应该把大块的try块分割成多个可能出现异常的程序段落,并把它们放在单独的try块中,从而分别捕获并处理异常。 (3)避免使用Catch All 语句。 Catch All 语句示例:
try {
//可能引发Checked异常的代码
} catch (Throwable t) {
//进行异常处理
t.printStackTrace();
}
所谓的Catch All不过是通过避免异常处理而加快编程的进度,实际开发应该避免 (4)不要忽略捕获到的异常。 建议处理异常、重新抛出异常后者等到合适的层处理异常。 责任链模式是一个不错的设计模式,建议了解一下。