前 言
“未被检测到的错误将可能被忽略。”
——引自一家领先计算公司的技术文档
“计算机科学的目标是构建能经得往时间考验的代码。”
——佚名
“在真的开始编程时我才发现,它比预想的难多了。忽然我意识到:我生命中的大多数时间都要花在查找自己程序的错误上了。”
——Maurice Wilkes
谁不希望自己一路顺风?谁不希望一夜间盖起高楼大厦,造出航天飞机?
但幻想代替不了现实。最现实的做法是未雨绸缪,防患于未然。举一个例子来说吧,即使出发前万里无云,远方的游子也应当备齐以下物品:
● 雨具
● 风衣
● 防晒霜
● 水
● 驱虫剂
● 急救箱
● 地图
● 指南针
● 登山绳
在特殊情况下,还要带上如下物品:
● 应急灯
● 狗拉雪橇
● 氧气设备
编程与旅行何其相似!与上面的旅行者一样,开发人员在面对程序时也应抛弃不切实际的幻想,客观准确地判断各种潜在问题。
在制定异常处理策略时,应随机应变地解决各类问题:有时忽略异常,而通常则“处理”或“抛出”异常。另外,必须制定一个甚至多个规划。
本书目标
我长年从事Java教学,在教学过程中,我发现学生们缺少一本有关Java异常处理的优秀书籍。由于缺乏正确的理论指导,Java开发人员也各自在黑暗中摸索。
但Java异常是一个重要的课题。对错误的处理方式决定着程序的维护,也会对测试和调试产生重大影响。若处理不当,代码将晦涩难懂。若源代码包含不正确的假设和逻辑,隐藏着神秘错误,那么,在投入到实际应用之后,后果将不堪设想!
很多人并不领会异常处理的精髓。在示例代码、生产系统和Java编程书籍中,经常出现下面这种“掩耳盗铃”式的程序块:
try{
operationA();
component.operateB();
}
catch (Exception e){}
空catch块不对try块抛出的异常作任何处理。这段代码可以编译,但存在严重隐患,可能引发故障,使程序无法正常运行!
本书将系统地介绍异常、错误和处理,阐述如何编写稳定的可维护代码,讨论如何处理异常。为消除错误,编写健壮代码,开发可靠的软件系统,您必须理解异常原理,领会相关的软件设计知识,了解各种API及其故障类型,学会制定体系结构决策,并学会选择恰当的设计模式。
本书并非简单地列出Java API的每个方法抛出的异常,而是循序渐进地与您一起探索代码中出现故障的规律,并简要介绍API或应用程序中容易出现的错误。
在处理异常的过程中,必须进行缜密的推理。本书介绍了大量最佳实践,这些都是他人在开发项目时得出的经验,可作为编码时的参考。但是,建议您不要照搬照抄,而是要有选择地灵活运用。
本书不是“万能药”,但的确是良师益友,能帮您编写更可靠、更易维护、更易测试和调试的代码。
编排方式
处理异常涉及开发、设计和体系结构等方面的知识。本书共分3个部分。
第Ⅰ部分介绍Java异常的产生机理和用法,介绍一些最佳实践,讲述各类异常处理使用的一般API和技术。
第Ⅱ部分阐述可测试性设计,介绍故障模式分析,讨论常见API的异常及起因,分析J2EE体系结构和分布式API的异常模式。
第Ⅲ部分讨论在软件开发周期执行异常和错误处理,分析软件体系结构、设计模式、测试和调试,列举成熟的设计模式,介绍处理策略对系统体系结构的影响,讲述如何构建健壮系统。
