00:00
好,那这个finally呢,这个说完以后呢,咱们其实关于第一种叫check finally这样一个,呃,结构呢,我们就算是讲完了,哎,就算是讲完了啊,那讲完以后的话呢,我们再接着往下讲呢,那就开始说这个异常的第二种处理方式了,哎,那这呢,我们就接着再去写一个,哎叫X section test2。哎,这个呢,咱们来讲一下叫异常处理的方式二,方式二呢,咱们叫roses roses后边呢加上一个叫呃,异常类型,这个呢,咱们还是直接呢就来写这个代码来体会啊,这呢,我们写一个代码public VO,我写一个叫METHOD1,这是一个方法,这个方法里边呢,我们去写段代码,咱们其实那会也讲了,说对于这种运行是异常,其实咱们就可以不去拆开了,那其实呢,这个Rose呢也就不用了,那编译式异常呢,是一定得考虑处理了,那咱们这块呢,自然而然的我就考虑放一段编译式的这些异常,哎,又是咱们一开始写的这个代码了,诶这个粘过来ctrl shift o1下行,这代代码呢,目前有异常。
01:21
咱们刚才讲的呢,是使用try catch finally进行处理的,现在的话呢,大家先不用考虑说这个事儿啊,说这个资源呢,你现在这个这个得放在finally里啊,等等等等,这个这个事咱们先忽略掉啊,就把它呢看成是一个编译式异常了,那此时有异常以后,要么呢,你用check finally去处理,要么呢就换一种方式,这种方式呢叫做throw,就是就像咱们讲的说它其实本质上来讲,没有把这个异常给他catch住干掉,而只是呢,采取了一种这个向上抛的一种策略了,对,就是让它的上一级呢去处理,那s Rose后边呢,加的叫异常类型,那就看你这里边呢,可能出现的是什么类型的异常,咱们说呢,可能会出现叫file not found exception,这是一个还有可能叫IO exception就这样写这两个的话呢,我们。
02:22
Ctrl shift o导一下l exception这个也得导一下行,导完以后你看这时候呢,就不出错了,那就相当于这个异常呢,现在咱们也是编译呢,就让他成功通过了。那就相当于大家你生病了以后,生病呢,就是一个异常,你去看病,看病的话呢,这个医生一看,说你这个嗯H5N9了啥的是吧,啊有点严重,他说我这搞不定,搞不定呢,但是呢,呃这呢是你这个登记的信息啊,说某某某多少岁了,说a ah5N9是吧,然后这块呢,说处理意见,处理意见前面就是异常怎么处理,他这就写了一个向上通报啊,那对于人家这个小医院来讲呢,其实他给处理了,处理的意思呢,就是说我我我做不了了是吧,我我反正把这个事儿呢,我给你抛出去了,不归我管了,就抛给谁了呢,抛给你这个,这个上一级了,那在咱们这儿呢,我把这个方法一抛给谁了呢,那就看谁掉它了,谁掉它我就抛给谁,那我们这呢,又写了一个方法。
03:21
我叫METHOD2,在这个METHOD2里边呢,我去调这个METHOD1,那就杨IG呢,你这个METHOD1这个事是不是就抛到我这了,你抛到我这了,抛到我这儿呢,我这有个异常,因为呢,你这抛的是这个编译时出现了异常,到这呢,你这不也就在这打叉了,说可能会出现这个IO啊,还有file not found呀,这个问题就跑到这来了,跑到这来以后,那现在这个问题是不是就归结到我们这个METHOD2这块了,对你现在要怎么做呢?他一看啊,H1N1我可以处理,H5N9呢,这个数也有点大,我也整不动是吧?哎,那我也往上抛,那你就也往上抛。
04:01
注意有一个S这个往上抛的时候呢,它抛的是这两种,我们这块呢,也可以抛这两种。这块呢,相当于写的比较细的就是这个呢,抛的是它这个read,包括这个close,这块呢抛的是它这样的,那恰好的话呢,这个IO是不是又是它的负类呀,那其实呢,这块呢,你写一个也行,因为你这个他这个错误是不是它这个异常是不是他也能罩得住啊啊那要非要说下就说这俩,我就这这写了俩这写了一个有什么区别呢。区别就是咱们一会儿要是真正去处理的时候,你如果说这个check,这个fair not found和我们这个IO,你要是处理的方式不一样,那你就始终呢,是不是写两你要说处理都一样的意见,那是不上,你合成一个就可以了。哎,可能哎还稍微差点意思,那咱们等一下来体会这个事儿啊,那接着呢,往上先走着,这个呢,对于方法二来讲呢,我也给处理了,那也不报错了,就是我也搞不定,我也就往上抛啊往上抛好,那接着抛接着抛,那这抛抛到没方法了,没方法呢,往这麦一放,这已经到头了,那你你你再抛也不太合适了,再抛呢,这个能不能抛呢?到到也能抛。
05:24
诶,看能不能跑。保存一下。啊,这个错,这个措施咱们这是一个静态方法,这是个静态法,是非静态的是吧,整激动了啊,这我省点事,直接在这加一个sta了,这sta。行,你看这样是不是就可以了,这是属于没方法,我也跑你也跑,有点不负责任了,就到没方法你再跑,你抛给谁啊,或者虚拟机,虚拟机搞不定,那把虚拟机给整挂了,所以这是到头了,就别再往上抛了。就是咱们这个处理意见也是你你怎么也得到头得有一个给处理一下,但是真要处入了,那那就就得认了,那就挂了就是吧,哎,那到这的时候呢,你就别再别再往上拖了,不太合适了,那这时候呢,你呢try catch一下吧,哎,所以我们这加一个踹,把这个呢放进去,哎放进去放进去,这不是咱们刚才说那个事了啊,我在这个MA2这块呢,我写的是一个,那其实你这块catch的话呢,你就光写一个哎IO的exception,那你这就写个IO的exception,这写1.printsta就行了,那如果说我这个位置呢,写写的是比较详细的,写了两个,写两个的话呢,这块呢,你恰好呢,出现不同的异常,你的处理方式假设还不一样。
06:46
那你这块你就也写上俩。哎,Not found exception,那这呢属于一样的,这个比如说你这不这样处理你是某一种方式,这个是另外一种方式,那你就还是写两,如果你这呢明显是一样的,那就没有必要非得是写两整这么长了,你直接这块不都是print sta嘛,它就是这个磁赋类的关系,直接呢一个就完事了。
07:11
就这个意思啊,那这样的话呢,咱们相当于把这个异常呢,就给处理掉了。处理掉了它就不会有问题了啊,就是这个意思,也就是说呢,咱们在这个没方法当中啊,大家还是就是你要一直往上抛,那到没方法这块呢,就不要再抛了。哎,这是一个,这是一个意思啊,那或者呢,再来说一个情况,就是我这呢,再写一个叫static。哎,Word我写个METHOD3,我们刚才这个METHOD2呢,我们直接放到魅力了,给TRY开了,那我要是放到这个METHOD3里边执行,我在METHOD3这块呢,我也给它做了一个check开,我直接点了一下啊,就相当于处理好了,处理好以后你说我这个三如果要是在这个main方法里边去调的话,还会有异常吗?是不是就没有了,诶,因为咱们在这已经给TRY开了。
08:02
哎,就没有了,行,那通过这个呢,咱们也能够看到这个Rose呢,相当于它只是对于这个结构来讲呢,它就是处理了,是往上抛了,但是本质上来讲,这个异常呢,并没有给解决掉,而我们这个try catch finally的方式才是真正的把这个异常呢给处理掉了,哎,这样的行,那通过刚才这个演示呢,我们去写这样的一些操作啊,首先呢,这个TRY,呃,Throws加异常的类型,这个结构呢,咱们是声明在方法的声明处,或者写在。方法的声明处,哎,指明此方法执行时可能会抛出的异常类型。异常类型啊,这呢是我们异常处理的第二种方式,那就是一旦当这个方法体执行时出现异常,出现异常啊,那么仍然会仍会在这个异常的代码处呢,生成一个异常类的对象。
09:10
To生成一个异常类的对象,然后呢,这个此对象呢,就会按照我们这个方法的这种方式跟咱们这个呃,Rose后边的异常类型匹配的情况下呢,就直接被抛除了啊嗯,仍会呢,在异常代码处生成一个异常类的对象,那么此对象满足我们这个roses后边这个异常类型时。哎,就会被哎抛出。哎,这个抛出呢,就是这个roses这个意思,那么对于咱们当前这个方法来讲呢,异常呢就处理结束啊,异常就处理结束,那顺便呢,再问一句话,咱们回到这个MA1这个层面啊,那我这呢写的叫HELLO1,显然呢,这个文件呢是不存在的,那意味着在这块是不是就抛出去了。
10:03
抛出,那你说我们这后边这些代码还有机会执行吗?来一个哈哈哈。哎,我这个MA1,咱们是在这MA1在MA2里边,MA2就在这掉了,我就这些没方法呗。对吧,嗯,我们跑一下,那你看这时候呢,出现这个信息,这个信息就是咱们在这打印的了,是不是那个哈哈没出来是吧,那说明呢,就是后边的就没机会执行了,所以它跟这个check family也有点区别了,没有一个所谓的family的一个结构了啊,那么此时呢,对此对象的满足Rose后,异常类型就会被被抛出,然后呢,这个异常代码后边的代码。后续的这个代码呢,就不再执行了,行这呢就是我们说的这样的一个情况。诶基本上大家去理解一下,那通过刚才这样一个说明呢,咱们也能够体会到一个情况呢,就是异常处理呢,是有两种方式,一个呢叫track,一个呢叫RO,那本质上来讲呢,我们说这个try catch finally还是比较靠谱的,他呢相当于是真正的将是不是异常呢给处理掉了。
11:19
处理掉了,然后呢,后续就是你这个方法如果在其他的方法中被调的时候呢,这个异常你就不会再出现了啊,真正的把异常给处理掉了,而咱们这个叫Rose的方式。这个方式呢,我们说只是呢,将异常哎抛给了这个结构的,或者叫方法的调用者,方法的这个调用者,对于我们当前这个方法来讲呢,你算是处理掉了,但是呢,你这个调用者呢,现在还会跑。啊,他只是把这个异常抛给了方法的调用者,然后并没有真正的将异常处理掉。
12:03
呃,异常处理掉,这呢就是他们二者的一个区别。哎,这就是二者的一个区别,行,那这个方式的话呢,其实咱们就也讲完了啊,那大家呢,可能就会有个疑问,那开发当中我到底是用它呢,还是用它呢?哎,咱们等一下再说。
我来说两句