什么时候抛出异常?

  在编写代码的过程中,经常会遇到这样的选择:检查到一个不正常情况,或某个操作失败,或检测到某个异常,该怎么办?是抛出一个异常?还是返回一个表示操作失败的返回值?

两种方式有何区别:

  • 异常处理需要更多的系统开销;
  • 返回值易于检测,异常处理代码相对较长;
  • 如果忽略返回值,调用者可以继续执行程序;但没有处理异常,则中止调用者的执行;

应该抛出异常的几种情况:

  1. 无法通过参数检查。

  例如参数规则错误。参数的规则说明是作为方法签名的一部分发布的,调用者应该很清楚调用这个方法所需要的参数的规格,但是调用者传入的错误的参数,说明调用者本身这时候很可能已经出现问题。 对参数进行检查本身也是良好习惯,这可以保证方法本身在一个相对比较稳定可靠的状态下工作。

  总之,拒绝非法参数,并抛出异常。

  2. 可能导致后续功能出错。

  如果一个异常或错误的参数,可能导致后续更多的异常,那么不要延迟,立即抛出异常。

  例如有一个属性 Filename 用来保存相关文件全名称,一个的方法 Save 将保存到 Filename 所指定的文件名中去,显然在给 Filename 属性赋值时,如果给出一个包含非法文件名字符的字符串,那将导致Save 方法中会有异常发生。不论 Save 方法是否对 Filename 再进行检查,如果文件名不合法,立即抛出异常,而不要等到以后再来发现这个问题。

不应该抛出异常的几种情况:

  1. 如果一个错误并不影响程序逻辑的正确性,或者不影响此后代码的继续运行,那么可以不必抛出异常。

 

 

参考链接:什么时候要抛出异常? !_u010895694的博客-CSDN博客

posted @ 2021-07-27 15:37  hik_wxy  阅读(151)  评论(0)    收藏  举报