如何巧妙地在调试过程中引发异常以优化IDEA体验?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1075个文字,预计阅读时间需要5分钟。
抛出异常,相信大家都会。只需这样:`throw new RuntimeException(didispace.com);`。但在开发过程中,有些情况下,我们需要测试程序对异常的处理逻辑是否正确。这时候,就需要我来检查。
抛异常相信大家都会吧?只需要这样就可以了:
throw new RuntimeException("didispace.com");但是,在开发过程中有一些情况,我们需要测试程序对异常的处理逻辑是否正确,这个时候就需要我们在程序运行时主动的抛出异常才会触发相关逻辑来验证正确性,比较常见的场景有:事务是否会回滚、Web层的统一异常处理等等。
这个时候,你是如何去制造异常,来支持你的调试呢?
下面我就以前写的Spring Boot教程(blog.didispace.com/spring-boot-learning-2x/)里一个事务处理的例子为场景,给大家看看一些常见的调试操作以及今天要讲的更优雅的操作。
案例说明
先介绍下场景,这是一个用Spring Data JPA实现的数据库操作案例,右侧UserService里一个事务操作,里面含有5句User表的插入语句。
因为@Transactional注解存在,所以saveSomeUsers函数下的数据插入要么都成功,要么都失败。成功很好测试,要测试失败的话,则需要我们让这个函数抛出异常才能触发回滚操作。
撸起袖子就是抛
为了抛出异常以验证事务是否能回滚,很多小伙伴是这样干的:
直接在这个函数里手工抛出异常,很粗暴很直接,是可以完成目标。
本文共计1075个文字,预计阅读时间需要5分钟。
抛出异常,相信大家都会。只需这样:`throw new RuntimeException(didispace.com);`。但在开发过程中,有些情况下,我们需要测试程序对异常的处理逻辑是否正确。这时候,就需要我来检查。
抛异常相信大家都会吧?只需要这样就可以了:
throw new RuntimeException("didispace.com");但是,在开发过程中有一些情况,我们需要测试程序对异常的处理逻辑是否正确,这个时候就需要我们在程序运行时主动的抛出异常才会触发相关逻辑来验证正确性,比较常见的场景有:事务是否会回滚、Web层的统一异常处理等等。
这个时候,你是如何去制造异常,来支持你的调试呢?
下面我就以前写的Spring Boot教程(blog.didispace.com/spring-boot-learning-2x/)里一个事务处理的例子为场景,给大家看看一些常见的调试操作以及今天要讲的更优雅的操作。
案例说明
先介绍下场景,这是一个用Spring Data JPA实现的数据库操作案例,右侧UserService里一个事务操作,里面含有5句User表的插入语句。
因为@Transactional注解存在,所以saveSomeUsers函数下的数据插入要么都成功,要么都失败。成功很好测试,要测试失败的话,则需要我们让这个函数抛出异常才能触发回滚操作。
撸起袖子就是抛
为了抛出异常以验证事务是否能回滚,很多小伙伴是这样干的:
直接在这个函数里手工抛出异常,很粗暴很直接,是可以完成目标。

