20

异常处理的 15 个处理原则

 5 years ago
source link: http://www.hollischuang.com/archives/2805?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

1、不用使用异常来管理业务逻辑,应该使用条件语句。如果一个控制逻辑可通过 if-else 语句来简单完成的,那就不用使用异常,因为异常会降低代码的可读性和性能,例如一些 null 的判断逻辑、除0的控制等等;

2、异常的名字必须清晰而且有具体的意思,表示异常发生的问题,例如 FileNotFoundException 就很清晰直观

3、当方法判断出错该返回时应该抛出异常,而不是返回一些错误值,因为错误值难以理解而且不够直观,例如抛出 FileNotFoundException 异常,而不是返回 -1 或者 -2 之类的错误值。

4、应该捕获指定的异常,而不是 catch(Exception e) 了事,这对性能、代码的可读性以及诸多方面都有好处

5、Null 的判断逻辑并不是一成不变的,当方法允许返回 null 的时候使用 if-else 控制逻辑,否则就抛出 NullPointerException

6、尽量不要二次抛出异常,如果非得这么做的话,抛出同一个异常示例,而不是重新构建一个异常对象,这对性能是有帮助的,而且外层调用者可获取真实的异常信息

7、定义你自己的异常类层次,例如 UserException 和 SystemException 分别代表用户级别的异常信息和系统级别的异常信息,而其他的异常在这两个基类上进行扩展

8、明确的使用不同的异常类型:

Fatal: System crash states. 
Error: Lack of requirement. 
Warn: Not an error but error probability. 
Info: Info for user. 
Debug: Info for developer.

9、不要仅仅捕获异常而不做任何处理,不便于将来维护

10、不要多次重复记录同一个异常,这可以让我们清晰的了解异常发生的位置

11、请使用 finally 来释放一些打开的资源,例如打开的文件、数据库连接等等

12、大部分情况下不建议在循环中进行异常处理,应该在循环外对异常进行捕获处理

13、异常的粒度很重要,应该为一个基本操作定义一个 try-catch 块,不要为了简便,将几百行代码放到一个 try-catch 块中

14、为你的异常生成足够的文档说明,至少是 JavaDoc

15、为每个异常消息定义一个数值,这对好的文档来说是非常重要的。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK