记录异常处理

mac2025-02-19  37

参考:https://blog.csdn.net/weixin_34929338/article/details/80285108

https://www.oschina.net/question/2491333_2278150?p=1

手动回滚

https://blog.csdn.net/weixin_42324471/article/details/99969418

疑问

什么时候抛出,

什么时候捕获

*,非运行时异常,是否需要手动抛出?不抛出,后面可以捕获到吗?

*,业务逻辑层抛出业务异常时,Exception也需要抛出吗,不然后面可以捕获吗

*,如果统一异常处理,是不是业务逻辑层异常抛出,controller也抛出业务和Exception异常

如果不使用统一异常处理,在controller层捕获异常即可

关于日志

不管controller捕获还是统一异常捕获,如果不打印异常,是不是生产服务器不会打印异常?

关于事务

1,业务分为多个方法时,怎么把几个操作放到一个事务中,方法上加

@Transactional(rollbackFor = Exception.class)

每个方法需要抛出异常Exception吗,不抛出的话,数据库是否会回滚

2,怎么实现事务隔离,该方法不加注解,是否可以实现

3,spring 事务加try catch就不回滚, @Transactional加上(rollbackFor = { Exception.class }) ,下面catch里面还需要手动回滚或抛运行异常了吗?

1、》你要在try catch里throw那个异常,如果不抛,事务根本不会回滚

2、》@Transactional标签默认会对RuntimeException异常进行回滚,如果你抛出的异常不是继承自RuntimeException,那需要你指定回滚的异常是什么异常,也就是你写的 rollbackFor = { Exception.class }

3、》多个方法加事务,前面的方法执行完之后不久commit了吗,应该是加注解的方法放到一个事务中,最终的方法执行完决定

commit或者rollback

4,通常的处理方式是什么,如果在类上加@Transational(robackFor={Exception.class}),是不是就可以解决,具体业务方法不用抛出异常。

 

 

 

 

最新回复(0)