Java 异常(四):如何使用异常

1. 异常的适用情况是?

答:

  • 异常应该且仅用于异常情况,即异常不能代替正常的条件判断
  • 真正出现异常的时候,应该抛出异常,而不是返回特殊值

2. 异常的来源大概是?

答:

  • 用户:用户的输入有问题。
  • 程序员:编程错误。
  • 第三方:泛指其他情况,如I/O 错误、网络、数据库、第三方服务等。
  • 每种异常都应该进行适当的处理

3. 异常处理的目标是?

答:

  • 处理的目标可以分为恢复和报告。恢复是指通过程序自动解决问题。报告的最终对象可能是用户,即程序使用者,也可能是系统运维人员或程序员。报告的目的也是为了恢复,但这个恢复经常需要人的参与。
  • 用户,如果用户输入不对,可以提示用户具体哪里输入不对;如果是编程错误,可以提示用户系统错误、建议联系客服;如果是第三方连接问题,可以提示用户稍后重试。
  • 程序都不应该假定第三方是可靠的,应该有容错机制

4. 异常处理的一般逻辑是?

答:

  • 如果自己知道怎么处理异常,就进行处理;如果可以通过程序自动解决,就自动解决;如果异常可以被自己解决,就不需要再向上报告。
  • 如果自己不能完全解决,就应该向上报告。如果自己有额外信息可以提供,有助于分析和解决问题,就应该提供,可以以原异常为 cause 重新抛出一个异常
  • 总有一层代码需要为异常负责。可能是知道如何处理该异常的代码,可能是面对用户的代码,也可能是是主程序;如果异常不能自动解决,对于用户,应该根据异常信息提供用户能理解和对用户有帮助的信息;对运维和开发人员,则应该输出详细的异常链和异常栈到日志。

5. 为什么要有异常处理机制?

答:

  • 在没有异常机制的情况下,唯一的退出机制就是 return,判断是否异常的方法就是返回值
  • 程序的正常逻辑和异常逻辑混杂在一起,代码的可读性和可维护性变差。
  • 程序员经常偷懒,假装异常不会发生。

6. 异常处理机制的好处?

答:处理异常情况的代码大大减少,代码的可读性、可靠性、可维护性都得到提高,具体表现在:

  • 程序的正常逻辑与异常逻辑可以相分离。
  • 异常情况可以集中进行处理。
  • 异常还可以自动向上传递,不再需要每层方法都进行处理。
  • 异常也不再可能被自动忽略。
-------------本文结束感谢您的阅读-------------