Skip to content
程序猿DD程序猿DD
主页
最新发布
Java新特性
玩转IDEA
旧版博客open in new window
社区交流open in new window
  • 基础配置

    • 新建项目的默认配置
      • 侧边栏显示文件更新时间
        • 护眼配置方案
        • 性能优化

          • 换M1芯片后的使用建议
            • 定制IDEA的内存设置
              • 内存和启动参数设置
              • 调试技巧

                • 条件断点
                  • 优雅地抛异常
                    • 案例说明
                      • 撸起袖子就是抛
                        • 优雅地抛异常
                        • 操作回退:Reset Frame
                          • 操作回退:Jump To Line
                            • 优雅调试stream操作
                            • 重构技巧

                              • 编辑器

                                • Markdown编辑器
                                • 插件宝库

                                  • Jump To Line:跳转任意行
                                    • Java Stream调试插件
                                      • 代码缩略图:CodeGlance Pro
                                        • API调试:Restful Fast Request
                                          • 文件树增强:Show Comment

                                          玩转IntelliJ IDEA:优雅地抛异常

                                          程序猿DD原创2022年4月17日
                                          • IntelliJ IDEA
                                          大约 2 分钟

                                          此页内容
                                          • 案例说明
                                          • 撸起袖子就是抛
                                          • 优雅地抛异常

                                          # 玩转IntelliJ IDEA:优雅地抛异常

                                          抛异常相信大家都会吧?只需要这样就可以了:

                                          throw new RuntimeException("didispace.com");
                                          

                                          但是,在开发过程中有一些情况,我们需要测试程序对异常的处理逻辑是否正确,这个时候就需要我们在程序运行时主动的抛出异常才会触发相关逻辑来验证正确性,比较常见的场景有:事务是否会回滚open in new window、Web层的统一异常处理open in new window等等。

                                          这个时候,你是如何去制造异常,来支持你的调试呢?

                                          下面我就以前写的Spring Boot教程里一个事务处理的例子为场景,给大家看看一些常见的调试操作以及今天要讲的更优雅的操作。

                                          # 案例说明

                                          先介绍下场景,这是一个用Spring Data JPA实现的数据库操作open in new window案例,右侧UserService里一个事务操作,里面含有5句User表的插入语句。

                                          因为@Transactional注解存在,所以saveSomeUsers函数下的数据插入要么都成功,要么都失败。成功很好测试,要测试失败的话,则需要我们让这个函数抛出异常才能触发回滚操作。

                                          # 撸起袖子就是抛

                                          为了抛出异常以验证事务是否能回滚,很多小伙伴是这样干的:

                                          直接在这个函数里手工抛出异常,很粗暴很直接,是可以完成目标。虽然这种方法在单元测试中作为一种场景是可以的,但如果在复杂的业务过程中这样做就不那么优雅了,因为你测试好还要删掉它,如果忘记了,那就是直接写了个Bug。

                                          # 优雅地抛异常

                                          实际上IDEA提供了自由抛异常的功能,只需要在Debug的时候,右键前几天介绍的回退操作Reset Frameopen in new window位置,就可以看到如下图箭头所标的Throw Exception操作了。

                                          然后在弹出框中,你就可以编写你想要抛出的异常了:

                                          是不是很简单呢?赶紧打开IDEA试一试吧!这里视频教程也同步更新了,点击就可以查看open in new window,我正在连载IDEA专题open in new window的视频内容,感兴趣的小伙伴可以关注我哟!

                                          上次编辑于: 2022/5/21 02:29:53
                                          贡献者: dd
                                          上一页
                                          条件断点
                                          下一页
                                          操作回退:Reset Frame
                                          © 2016 - 2022 didispace.com 版权所有
                                          沪ICP备14037150号-3
                                          Copyright © 2022 程序猿DD