异常处理的 15 个处理原则
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
见过很多人在进行异常处理的时候,直接一个e.printStackTrace() 就完成了,这是一种非常粗陋的做法,首先会导致应用日志的大量错误信息,而很多时候你都不知道这些错误信息因何发生;再者,反应到用户端将直接导致用户无法获取操作的结果以及失败的原因。
以下15 条异常处理的原则来自国外的博客:
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.为每个异常消息定义一个数值,这对好的文档来说是非常重要的。
你有其他的补充吗?请不吝赐教。