春天中如何进行日常错误排查

介绍

这篇文章将为大家详细讲解有关春天中如何进行日常错误排查,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

,前言

日常错误排查系列都是一些简单错误排查,笔者将在这里介绍一些排查Bug的简单技巧,同时顺便积累素材^ _ ^ .

错误现场

最近有人反映java应用操作数据库的时候,抛异常不回滚。这还了得,不过笔者笃定肯定是用法的锅,不然就全乱套了,所以笔者去审查他的代码。

代码片段

 @Transacion (value=https://www.yisu.com/zixun/" x ")公共空s1()抛出MyException{更新(1);throwBusinessException ();更新(2);}

乍看上去没啥问题。

思路

笔者用@Transaction注解也用了好几年了,从来没遇到过抛异常不回滚的情况。看他的用法也和笔者差不多呀?

然后笔者稍微思索了会,发现我写的代码和出问题的这一段稍稍有些不一样。我是这么写的:

 @Transacion (value=https://www.yisu.com/zixun/transManager)公共空s1(){更新(1);更新(2);}

貌似我从来没有在函数上加过扔,MyException,难道是这段有问题?翻看MyException代码,发现它仅仅继承了例外。

 class  MyEception  extends  Exception  {,} 

好像就这点不一样。而笔者自定义的异常基本继承了RuntimeException的。

翻下春源码

按照这个思路,笔者去翻了下春天的源码,看下它在声明式事务中的处理逻辑到底是什么,于是翻到了这一段处理事务异常的代码:

 TransactionAspectSupport.java  protected  void  completeTransactionAfterThrowing (TransactionInfo  txInfo, Throwable 交货),{,,,,if  (txInfo.transactionAttribute.rollbackOn (ex)),{,,,,}其他{,,,,,,,,//,We 不要# 39;t  roll  back 提醒却;能够例外只,,,,,,,,//,Will  still  roll  back  if  TransactionStatus.isRollbackOnly (), is 真正的只,,,,,,,,//,在checkedException的时候,不会被回滚,会提交! ! !,,,,,},},@Override  public  boolean  rollbackOn (Throwable 交货),{,,,,return  (ex  instanceof  RuntimeException  | |, ex  instanceof 错误),,}

关于“春中如何进行日常错误排查”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看的到。

春天中如何进行日常错误排查