Part 1 异常处理的现状 3
Chapter 01 你对异常处理的了解有多少? 3
02 异常处理的重要性 6
03 “种花”电信,我真是猜不透你啊! 14
04 HTC One X——发现一个Bug 21
05 HTC One X——我只是想打通电话呀! 25
06 HTC One X——拍照的错误消息描述 30
07 可靠性可以是一门生意 35
Column A.倒霉的人很适合当神秘客 39
Part 2 异常处理的基本观念 47
Chapter 08 强健性大战首部曲——魅影危机 47
Column B.找不到数据,要传回Null还是丢出异常? 54
09 异常处理的四种脉络 57
10 面向对象语言的异常处理机制 69
11 你的汽车有多耐撞?谈谈异常安全性 86
12 对比异常处理和容错设计 90
Column C.网络又断了 95
Part 3 JAVA语言的异常处理机制 101
Chapter 13 Java的异常处理 101
14 我的异常被finally块覆盖了 110
15 被打压的异常——抢救异常大作战 116
16 清理失效的语义要表达清楚 122
17 自己制作“被打压的异常” 131
18 Try、Catch和Finally的责任分担 144
Column D.这是你的问题,不是我的问题 152
Chapter 19 异常处理失败,怎么办? 156
20 已查异常与未查异常的语义与问题 159
21 接口演进 164
Part 4 为什么异常处理那么难?异常处理的4+1观点 173
Chapter 22 用途观点 173
23 设计观点 177
24 处理观点 181
25 工具支持观点 185
26 流程观点 191
Column E.你如何评价成功 198
Part 5 强健度等级与异常处理策略 203
Chapter 27 异常处理设计的第一步——决定强健度等级 203
28 强健度等级1——错误报告的实现策略 211
29 强健度等级2——状态恢复的实现策略 216
30 强健度等级3——行为恢复的实现策略 223
Column F.VMWare越狱之替代方案 231
Chapter 31 异常类的设计与使用技巧 235
32 终止或继续 245
33 自动化更新 249
Column G.升级、降级,傻傻分不清楚 253
Part 6 异常处理坏味道与重构 261
Chapter 34 异常处理坏味道 261
Column H.仙人打鼓有时错——谈谈Clean Code一书中介绍的异常处理 269
Chapter 35 用异常代替错误码 275
36 以未查异常取代忽略已查异常 281
37 以重新丢出异常代替空的处理程序 285
38 使用最外层Try语句避免意外终止 290
39 以函数取代嵌套的Try语句 295
40 引入Checkpoint类 301
41 引入多才多艺的Try块 309
Column l.客户满意,老板赚钱,你护肝 317
Chapter 42.一个函数只能有一个Try语句 326
Column J.眼力测试 332
Appendix A.眼力测试参考答案 340
参考文献 349