异常捕获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中取出来,这时候后端可以看到对应的报错信息。