我对增强类里面的方法用@After存在疑问

我对增强类里面的方法用@After存在疑问

http://img1.sycdn.imooc.com//climg/5dcd9c7e084d2b8716390771.jpg

http://img1.sycdn.imooc.com//climg/5dcd9c6f086282e400000000.jpg

用@After最终通知,无论是否异常都会执行,而代码里设置了log.setResult("成功");  所以你的操作永远都是成功的,这样是否不合理?因为如果中间出现异常,也是显示操作成功。就像老师在后面一节视频演示的,删除有外键关联的部门,应该是删除不了的,是不成功的,但是操作日志里面显示的也是成功,然后紧接着同一时间抛出异常,看我第二张图圈出的两条记录。所以是不是应该用@AfterReturning?还是怎么处理呢?

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学你好!

经过老师对视频确认,老师这里应该是后面更改过~这里没有展示出来。

非常抱歉给同学带来不好的学习体验,我们会向相关的工作人员进行反馈~来修改这个错误,希望同学可以见谅。

非常感谢同学能够为我们指出问题,帮助我们进步。

祝学习愉快~

提问者 慕函数5323999 2019-11-15 16:02:07

http://img1.sycdn.imooc.com//climg/5dcd9c7e084d2b8716390771.jpg

http://img1.sycdn.imooc.com//climg/5dce5af9087c6b3711040565.jpg

第一张图是视频里面的代码,用的是@After,这个通知类型永远成功

第二张图是下载的源码文件里的,用的是@AfterReturning

  • 提问者 慕函数5323999 #1
    所以我就纳闷,为什么视频里面老师,删除记录的时候,不显示成功,而只是显示异常,而我删除记录,不但显示异常,还显示成功,因为我是按视频@After,而老师应该是后面改成@AfterReturning,
    2019-11-15 16:06:32
好帮手慕柯南 2019-11-15 15:06:10

同学你好!

  1. 老师在本地运行删除时,只有一条记录

    http://img1.sycdn.imooc.com//climg/5dce4bc20924b00b07280095.jpg

  2. 另外抛出异常时在本次项目中是由@AfterThrowing注解所注释的方法来完成的。

    http://img1.sycdn.imooc.com//climg/5dce4e2f0946761909270259.jpg

  3. 同学的删除代码,是不是和老师写的不一样呢?是否在哪里捕获了异常。建议同学可以下载老师的源码参考一下。

祝学习愉快~

  • 提问者 慕函数5323999 #1
    老师我不知道你有没有认真看我的问题 你说的 2.另外抛出异常时在本次项目中是由@AfterThrowing注解所注释的方法来完成的。 这个没错,出现异常会执行这个,但是你还有@After啊,所以就算删除的时候出现异常,它设置了log.setResult("成功"); 所以你的操作永远都是成功的。另外,我看了源码,源码里是@AfterReturning,而不是视频里面的@After,老师你自己看一下,对比一下
    2019-11-15 15:57:56
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师