二.什么时候处理异常
仅当以下一种或多种情况时,我们的代码才需要抓住异常
1. 记录异常(logging)
将异常记录到日志中,便于support人员查找错误原因。
2. 为这个异常添加相关信息(wrap exception)
加发生异常的环境信息记录,并产生新异常,交给调用本方法的代码负责处理。
3. 执行清理工作
比如关闭数据库连接,Dispose对象,Rollback,Compensate操作等。
4. 尝试从异常中恢复
比如程序可以取一个默认值让程序继续进行(上次举过实时显示设备温度的程序的例子,当程序请求设备,但设备有时会因为响应
超时导致程序异常,这是程序可以捕捉这个异常,以上次取得的温度结果显示给用户)
常见的例子还有数据库连接突然断掉,或者插入数据时主键冲突(有可能是输入错误,也有可能同一条数据被别的用户先插入到数据库了)。
5. 隐藏异常敏感信息,替换成友好信息给用户。
四.处理异常的指导意见:
1. 除非是第二点处提到的时候,
其他时候不要处理异常
2. 在程序里的边界处处理异常(比如逻辑层的最上面一层,调用的服务处,UI等),并且屏蔽掉敏感信息,只保留对当前层次安全的信息。
3. 通过自定义异常的名字来表达异常类型,应该怎么处理,是否能恢复。
摘自http://www.cnblogs.com/xd125/archive/2011/07/08/2100973.html