00:00
来,我们接着说啊,呃,下一个的话我们再来说一下,叫做异常通知,那么顾名思义,这个异常通就是什么呀,在目标方法什么呀?哎,在目标方法抛出异常后执行啊,就是你有异我才会执行,如果你没有异常我是不会执行的啊好,我们来写一下public word叫做什么呀,After throwing0。好,After throwing就是当你抛出异常以后我才会执行的啊,我们来把这个头法写出来,那么它用了一个是注解的,叫做什么after啊,这里面的话,我们依旧要去写我们的切入点表达式啊,来把它写到这C好准备啊,把它放到这能看到吗?没问题吧,那么这里面呢,我们依旧可以去使用我们的join point啊,把它定义出来join point,然后呢,我们呃,正常也是能获取到我们的方法的名字的啊,我们把它呢,再拿过来,好放到这个位置。
01:06
看明白了吧,把这个方法的名字拿过来啊,然后的话,你抛出一张以后呢,我希望记录什么呀,我希望记录的就是好先来写一下呃,你的什么方法啊,比如说你的这个方法谁呀,加上我们的method的name,然后呢,加上啊,比如说of course啊,就造成了一个什么异常呢?啊,造成了一个什么异常的,我希望把这个异常信息的也给它什报显示出来,那么这样的话呢,我们就得能获取到那个目标方法的这个异常信息了吧,对不对,怎么获取异常信息呢?其实也比较简单啊,还是在这个中间里面呢,再加上一个设置叫做什么呀,叫做sir throwing啊,你把它的指定一个值,比如说我就叫做ex,那么我们只需要保证什么呀,保证跟我这个行参里面的一个类型,比如说IN3的ex,只要让这个名字跟我的这个名字是一样的,那么它就能把方法的那个异常信息,诶给到我的这个异常啊,所声明的这个形态上面,那么在这个位置的话呢,我就会直接。
02:06
先获取到这个ex跟那个返回值是一样的,能听明白吗?OK,那把这个写好以后呢,我们再来做一个测试,好先把这个错误的注释掉,我们来看一下对于正常的执行来讲,有没有那个异常通知,没有,但是呢,当我们这个出错了以后,来大家再来看它这异常通知呢就出来了,OK,我们来看对于第二个方法来讲,你看异常通知,就是你div这个方法造成了一个什么异常呢?是一个算数异常,你看是把这个异常信息呢,就给我,是不是拿到这个位置了,看明白了吗?诶他就能获取到啊,所说呢,这就是我们的一个异常同志,用起来也比较简单啊。好,再来强调一下,就是获取方法的这个异常,好,那么我们要通过一个throw来去什么来指定一个名字啊,必须要与什么呀,方法的这个一个行参名一致,听懂了吧,OK,那么除了这个。
03:06
之外的话再来给大家去扩展一下啊呃,那假如说呢,我想让你抛出指定异常以后,我才执行这个异常通知,并不是说所有的异常我都去执行。那怎么做呢?注意,比如说哎,我希望你的方法是抛出一个空指针异常的,那么我才去执行这个异常通知,如果你抛出的不是空指针异常,那你就不要来执行。怎么做呀,哎,我们可以这么来做啊,就是呃,可以通过。啊,可以通过什么呀,通过呃指定啊,就通过什么呀,通过这个行参中啊,异常的这个类型啊,来指定就是来什么呀,来设置抛出指定异常才会什么呀,执行我们的哎,异常通知啊这是一个什么意思呢?大家注意啊,比如说我希望它抛出空指针议后才执行,那么你就不要写成exception了,而是写成一个诶,No part exception这样的话呢,只有你的抛出的异常是一个空指针,哎,那么我才会执行我的异常通知,我们来看一下啊好,现在我拍的是什么异常吗?算数异常吧,大家来看一下刚刚还有的异常通知,现在还有吗?
04:25
没有了,看到了吧,没有了,OK,那假如说我把这个位置呢,改成这个算数异常了,好改成算数异常了,现在满足不满足满足吧,OK,那满足的话呢,我们再来运行一下,我们就能看到,当它满足了以后呢,诶,这个异常通知是不是又出来了,看明白了吧?哎,所以说呢,我们就可以通过什么呀,通过这个异常的类型来去。决定你抛出什么异常才能执行到我的这个异常通知,那么默认情况下的话,就是你定义except,就是你不定义的话呢,就是啊,抛出任何异常都会什么执行的,听懂这个意思了吧?OK,这就是我们的异常统治啊。
我来说两句