阿里Java开发手册~异常处理

这篇具有很好参考价值的文章主要介绍了阿里Java开发手册~异常处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 【强制】 Java 类库中定义的一类 RuntimeException 可以通过预先检查进行规避,而不应该
通过 catch 来处理,比如: IndexOutOfBoundsException NullPointerException 等等。
说明: 无法通过预检查的异常除外,如在解析一个外部传来的字符串形式数字时,通过 catch
NumberFormatException 来实现。
正例: if (obj != null) {...}
反例: try { obj.method() } catch (NullPointerException e) {...}
2. 【强制】异常不要用来做流程控制,条件控制,因为异常的处理效率比条件分支低。
3. 【强制】对大段代码进行 try - catch ,这是不负责任的表现。 catch 时请分清稳定代码和非稳
定代码,稳定代码指的是无论如何不会出错的代码。对于非稳定代码的 catch 尽可能进行区分
异常类型,再做对应的异常处理。
4. 【强制】捕获异常是为了处理它,不要捕获了却什么都不处理而抛弃之,如果不想处理它,请
将该异常抛给它的调用者。最外层的业务使用者,必须处理异常,将其转化为用户可以理解的
内容。
5. 【强制】有 try 块放到了事务代码中, catch 异常后,如果需要回滚事务,一定要注意手动回
滚事务。
6. 【强制】 finally 块必须对资源对象、流对象进行关闭,有异常也要做 try - catch
说明: 如果 JDK 7 及以上,可以使用 try - with - resources 方式。
7. 【强制】不能在 finally 块中使用 return finally 块中的 return 返回后方法结束执行,不
会再执行 try 块中的 return 语句。
8. 【强制】捕获异常与抛异常,必须是完全匹配,或者捕获异常是抛异常的父类。
说明: 如果预期对方抛的是绣球,实际接到的是铅球,就会产生意外情况。
9. 【推荐】方法的 返回值可以为 null ,不强制返回空集合,或者空对象等,必须添加注释充分
说明什么情况下会返回 null 值。调用方需要进行 null 判断防止 NPE 问题。
说明: 本手册明确防止 NPE 是调用者的责任。即使被调用方法返回空集合或者空对象,对调用
者来说,也并非高枕无忧,必须考虑到远程调用失败、序列化失败、运行时异常等场景返回
null 的情况。
10. 【推荐】防止 NPE ,是程序员的基本修养,注意 NPE 产生的场景:
1 返回类型为基本数据类型, return 包装数据类型的对象时,自动拆箱有可能产生 NPE
反例: public int f() { return Integer 对象 } , 如果为 null ,自动解箱抛 NPE
2 数据库的查询结果可能为 null
3 集合里的元素即使 isNotEmpty ,取出的数据元素也可能为 null
4 远程调用返回对象时,一律要求进行空指针判断,防止 NPE
5 对于 Session 中获取的数据,建议 NPE 检查,避免空指针。
6 级联调用 obj . getA() . getB() . getC() 一连串调用,易产生 NPE
正例: 使用 JDK8 Optional 类来防止 NPE 问题。
11. 【推荐】定义时区分 unchecked / checked 异常,避免直接抛出 new RuntimeException()
更不允许抛出 Exception 或者 Throwable ,应使用有业务含义的自定义异常。推荐业界已定义
过的自定义异常,如: DAOException / ServiceException 等。
12. 【参考】在代码中使用 抛异常 还是 返回错误码 ,对于公司外的 http / api 开放接口必须
使用 错误码 而应用内部推荐异常抛出 跨应用间 RPC 调用优先考虑 使用 Result 方式 ,封
isSuccess() 方法 错误码 错误简短信息
说明: 关于 RPC 方法返回方式使用 Result 方式的理由:
1 使用抛异常返回方式,调用方如果没有捕获到就会产生运行时错误。
2 如果不加栈信息,只是 new 自定义异常,加入自己的理解的 error message ,对于调用
端解决问题的帮助不会太多。如果加了栈信息,在频繁调用出错的情况下,数据序列化和传输
的性能损耗也是问题。
13. 【参考】避免出现重复的代码 Don t Repeat Yourself ,即 DRY 原则。
说明: 随意复制和粘贴代码,必然会导致代码的重复,在以后需要修改时,需要修改所有的副
本,容易遗漏。必要时抽取共性方法,或者抽象公共类,甚至是共用模块。
正例: 一个类中有多个 public 方法,都需要进行数行相同的参数校验操作,这个时候请抽取:
private boolean checkParam(DTO dto) {...}

文章来源地址https://www.toymoban.com/news/detail-610889.html

到了这里,关于阿里Java开发手册~异常处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 04.阿里Java开发手册——注释规约

    【强制】 类、类属性、类方法的注释必须使用 Javadoc 规范,使用 /**内容*/ 格式,不得使用 // xxx 方式。 说明:在 IDE 编辑窗口中,Javadoc 方式会提示相关注释,生成 Javadoc 可以正确输出相应注释;在 IDE中,工程调用方法时,不进入方法即可悬浮提示方法、参数、返回值的意义

    2024年01月16日
    浏览(40)
  • 阿里巴巴_java开发规范手册详解

    反例: _name, $name, __name 说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义。注意,纯拼音命名方式更要避免采用。 正例:renminbi / alibaba / taobao / youku / hangzhou 等国际通用的名称,可视同英文。 反例:DaZhePromotion [打折] / getPingfenByName() [评分] / int 某变量 = 3 正例:

    2024年02月06日
    浏览(43)
  • 我借助 AI 神器,快速学习《阿里的 Java 开发手册》,比量子力学还夸张

    我平时经常要看 PDF,但是我看书贼慢,一个 PDF 差不多几十上百页,看一遍要花挺长时间。 我记性还不好,看完之后,过些日子就记不清 PDF 是讲什么的了。为了找到 PDF 里的某些信息,又得再花时间。 不过,现在这些问题都不是问题了。 因为我最近发现了一个神器,1 分钟

    2024年02月08日
    浏览(34)
  • Go语言精进之路目录

    目录 第一章、 Go语言基础全攻略:从入门到精通 一、介绍 01.Go 语言的前生今世 二、开发环境搭建 01.Go 语言开发环境搭建 三、初识GO语言 01.Go 多版本管理工具 02.第一个 Go 程序“hello,world“ 与 main 函数 03.Go 常用命令介绍 04.Go 项目代码布局 05.探索 GO 项目依赖包管理与Go M

    2024年02月08日
    浏览(29)
  • 【Java练习题汇总】《第一行代码JAVA》异常处理篇,汇总Java练习题——异常的概念及处理标准格式(try、catch、finally、throws、throw)、断言机制 Assertion ~

    一、填空题 Throwable 下的两个子类是______________ 、______________ 。 ArthmeticException 类表示______________ 异常, ArraysIndexOutOfBoundsException 表示______________ 异常。 一个 try 代码后面必须跟着若干个_______ 代码段或者一个_______ 代码段。 如果一个方法使用了_______ , 则编译器会强制在使用此

    2024年02月16日
    浏览(41)
  • GitHub霸榜月余的24万字Java面试手册,竟是阿里机密

    截取了部分内容。 (免费分享给大家)帮忙转发一下,添加小助手微信:Mxy98811即可免费获取 Java基础篇(45道面试题) 字符串集合篇(74道) 并发编程篇(79道) JVM篇(56道) 数据结构与算法(56道) 网络协议篇(50道) MySQL篇(59道) 自我介绍一下,小编13年上海交大毕业

    2024年04月17日
    浏览(52)
  • 这套【阿里-服务端开发与面试知识手册】2023年了不会还有人没看过吧

    整篇 128362字 ,300+页的笔记涵盖**【Java体系】和【架构能力】 两大部分 包含 网络和操作系统基础、JVM、多线程、Spring、Netty主流框架 等重点知识,以及 结合实践给出各类难点问题和解决方案**等,不管你是正在学习Java还是已经工作了都是对你的技术提升有非常大的好处,不

    2024年02月05日
    浏览(55)
  • 吊打98%的JAVA同行,这份阿里P8架构师升级手册登上天梯!

    我们都是IT人,所以,我们注定了很像。 前段时间有个朋友去阿里面试,作为一个社招生,太多痛苦了。都知道进大厂最好的时机就是应届生的时候。作为社招生,太难了。 我这位朋友经历了 五轮面试 最后才上阿里做了P6的职位。我也不得不佩服这位朋友的社交能力,和阿

    2024年02月06日
    浏览(35)
  • 阿里巴巴 2023 版(Java 岗)面试突击手册,Github 已标星42K

    程序员作为一个自带“高薪多金”标签的职业,收入要高于市场的平均薪资,即便是在 2023 年,程序员的薪资依然保持居高不下。 据拉勾发布的《2022 程序员群体职场洞察报告》显示计算机专业的应届本科生起薪普遍高于其他职业的平均薪资水平。77%的本科毕业生起薪超过 1

    2024年02月09日
    浏览(51)
  • 全面上新!阿里 2023 版(Java 岗)面试突击手册,Github 已标星 37K

    程序员面试背八股,几乎已经是互联网不可逆的一个形式了。自从面试**八股文火了之后,网上出现了不少 Java 相关的面试题,很多朋友盲目收集背诵,**但网上大部分的面试题,大多存在这几个问题: 第一,未必系统全面;第二,光有题没有答案解析;第三虽然资料不错,

    2023年04月11日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包