RuntimeException和Exception的区别

本质:

RuntimeException:是不受检查异常,也就是即便不抛也不会出编译错误,虚拟机会自己抛出来,常见的:NullPointerException,ArrayIndexOutOfBoundsException,IllegalArgumentException,在实际编码过程中,你没有抛它也会自己出。

非RuntimeException:受检查异常,就必须要往上抛,否则编译出错。

设计:

假如说,让你做一个异常的设计,你会怎么设计?

个人理解:如果是业务上的异常,并且你知道要如何处理这个异常,那么应该extends Exception.

如果是系统异常或者调API的异常,而且这些异常你无法预料也无法去解决,那么就应该extends RuntimeException

Spring事务:

Spring的@Transactional这个注解默认的是Error和Runtimexception才会回滚事务

如果是Exception的话,Spring是不会回滚事务的。

假如说抛Exception想回滚事务应该怎么做?

①:@Transactional(rollbackFor = Exception.class)

②:catch到Excetion 然后new Runtimexception往上抛

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值