SpringBoot事务失效的简单原因

当在try_catch中处理数据库事务时,异常可能被静默捕获,导致无报错信息。为了解决这个问题,应将可能导致异常的代码段单独处理,例如文件上传和数据库保存。当异常发生时,应提供详细的错误信息,如在catch块中添加e.getMessage()。这样,后端可以接收到并显示相应的错误信息。
摘要由CSDN通过智能技术生成

异常捕获try_catch时,如果你将一个调用数据库事物的方法写在一个surround方法方法当中,

如果其中有错误,异常会被catch捕获,并且代码在执行到数据库操作方法语句方法的时候自动停止,无报错信息,此时不管是前端还是后端都无法看到任何的报错信息,只有添加了@Transactional注解的时候,会出现事务异常被关闭的信息如图,

 在这个时候要将代码从try-catch中单独放出来执行例如

 

//实际文件地址
File dest = new File(filePath + System.getProperty("file.separator") + fileName);
//存储到数据库里的文件地址
String storeUrlPath = "/song/" + fileName;
try {
    mpFile.transferTo(dest);//上传文件到指定文件夹
} catch (IOException e) {
    jsonObject.put(Consts.CODE, 0);
    jsonObject.put(Consts.MSG, "保存失败" + e.getMessage());
} finally {
}
Song song = new Song();
song.setSinger_id(Integer.parseInt(singerId));
song.setName(name);
song.setIntroduction(introduction);
song.setPic(pic);
song.setLyric(lyric);
song.setUrl(storeUrlPath);//设置数据库中的图片路径
Boolean res = songService.insert(song);
if (res) {
    System.out.println("保存成功");
    jsonObject.put(Consts.CODE, 1);
    jsonObject.put(Consts.MSG, "保存成功");
    jsonObject.put("avator", storeUrlPath);
    return jsonObject;
}else {
    System.out.println("保存失败");
    jsonObject.put(Consts.CODE, 0);
    jsonObject.put(Consts.MSG, "保存失败");
    return jsonObject;
}

此时的代码已经将其从try-catch中取出来,这时候后端可以看到对应的报错信息。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值