Java之【异常处理】在项目开发中的通用规范

这一问题,已苦恼多日,上述答案系近整整2日广泛阅读书籍、博客、网络问答后,归纳并苦思而成。
本博文仅罗列总的观点,各观点的具体解释,可私信Word笔记。
如需转载or复制时,请注明出处。
本博文同步发表于知乎:在Java的异常处理机制中,什么时候应该抛出异常,什么时候捕获异常?

一 通用规范 - 1

0 延迟【捕获】,尽早【抛出】,【量力】而行。
1 ☆尽量避免且不捕获本可避免的【Unchecked异常】
2 ☆不用异常做【流程/条件控制】
3 ☆finally块:必须关闭资源对象、流对象;有异常时,亦需try-catch捕获;
4 ☆return语句:不能在 finally 块中使用
5 ☆抛出的异常 := 捕获的异常OR 抛出的异常的父类
6 △错误码For对外API | 友好提示信息For用户终端 | 抛异常For内部应用
7 △方法空值处理:允许为null,注释需详尽
8 △防止NPE

二 抛出异常情况 - 2

1 [WHEN]通知信号:传递信号,需告知【调用方】
2 [WHEN]无能为力:【被调用方/本方法】无能力处理的异常,【调用方】有能力处理
3 [WHEN]框架考量:【框架】层面的需要
4 △[WHAT]抛具体的|业务的异常,禁抛Throwable|Exception|RuntimeException

三 捕获异常情况 - 3

1 从特殊到一般:捕获/处理N个异常的顺序
2 ☆非稳定的代码:只捕获可能产生异常的【非稳定代码】
3 ☆顶层调用者:必须处理异常,转换为用户可理解的内容
4 ☆回滚事务:手动回滚try块在事务代码中的事务

参考文献

[0] Java语言程序设计 - 华南理工大学出版社(王振飞 孙媛 著)
[1] 阿里巴巴开发规范手册
[2] 在Java的异常处理机制中,什么时候应该抛出异常,什么时候捕获异常?-Zhihu
[3] Java异常的正确使用姿势 – OSChina

猜你喜欢

转载自www.cnblogs.com/johnnyzen/p/12329624.html