00:00
咱们昨天啊,应该做了一个效果,就是我在里边呢,在common里边写了一个类,然后类里边呢加个方法,这方法中就是指定这异常就是exception exception表示所有异常,当你有异常,只要是异常它都会用这个方法啊,这是咱们昨天写到的,而咱今天继续往下来写,咱看另外的两种情况。好,我写这个位置啊。它叫做。统一异常处理,咱昨天写的第一种情况啊,它叫做全局异常处理,这单昨天已经写过了,做法就是你写这么一个类,然后类里边呢,加上一个方法。在这个方法里边,我们就写上你要执行的是哪个异常,咱们写的是这个叫exception,那exception因为它是异常啊,都会继承它,所以咱们他就表示所有异常都会定这个方法啊,这是第一个叫选举异常处理,对咱昨天已经说过了啊。
01:03
然后咱今天继续往下演示下面啊,给大家演示第二个异常。第二个叫什么呢?这里写一下啊,它叫做特殊异常,或者说特定异常处理,那什么意思呢?咱们啊具体看效果,比如说大家看啊,我刚才的异常是不是这个异常。这一常表示是不是这个零不能做除数异常,那比如现在我想做个操作,当我现在一执行程序出现了这个异常,咱给他就不输出这句话,输出别的,比如输入一个执行了什么你的这个异常,或者执行了什么那个特殊异常啊,这个叫特定异常处理,就根据特定异常做不同的输出,那咱们来啊,给他演示一下,咱看怎么做啊。那我来演示啊,就是做法,我觉得各位啊,应该有一种举一反一的能力,还不是举一反三,就是举一反一,那大家看该怎么做啊,你看这个方法,这个方法写的这个是不是叫exception,那我现在比如说我想做一个叫特定的异常。
02:14
什么叫特定异常,就是这个异常执行,那怎么做呢?其实很简单,你把这方法再复制一次,然后把这异常改成你的特定异常就可以了,这就是他的一种做法,把这异常位置改成特定异常,那咱们来试一下啊,现在我把这个再复制一份,然后异常呢,咱就改成我们这个异常啊,就是它。把这个拿过来。这个啊,然后为了区分,我把这个给它改个名字啊,比如执行了这个异常处理啊,就是咱那个零不能为除数那个异常,这就叫特定异常处理,当你有异常,比如是这个异常,那这个方法就会执行啊,这是我们的特定异常处理。就是这么一个切法啊,我把这个给大家也是复制过来。
03:03
就是这段话啊。那咱们把这个就完成了啊,然后写完之后,咱们来看一下这个效果是怎么样的啊,咱来试一下啊。看一下这个结果。我现在啊,把服务重新启动,我现在大家注意在我这里边有一个全局的一个except,还有咱们这个特定异常,那现在我还是执行刚才的程序,咱看他最终会有什么样效果啊,咱来试一下啊。这个啊已经启动了,然后咱们啊,现在来到我们这个Spark里边,我先重新刷新。还是找到有异常这个方法,我输入一个值,然后我点tryout,大家看结果,你看啊执行了谁。执行了,是不是咱们刚才写的这个特定异常,这是不是就执行了啊,所以这是我们说的第二种情况,叫特定异常处理,或者说特殊异常处理啊,这是一种方式。
04:05
但是现在这过程中啊,有一种机制,我觉得各位应该都能想清楚啊,你看我现在这里边啊,既有全举的是不是又有特定的,但他最终执行的是不是执行特定的,那他机制怎么样的呢?给大家来说一下啊,就应该不难理解啊,比如说现在它的机制是什么,当你执行了异常,比如说执行了这个异常,那怎么做呢?它到里边先找,如果说有你这个异常对应的方法,那这个方法就执行,但如果说这异常没有定的方法,那选举是不执行,他就这个地制,先找你特定异常方法,有的话去执行,没有的话执行,这个叫选举异常。啊,所以这个是咱演示的第二种情况叫特定或者说特殊异常处理,这咱们就演示完了啊。但是这种方式啊,在实际的项目开发中也会用到,大家用的不是特别的多,因为很多时候大家应该并不知道它最终会出现什么异常啊,所以这里边啊,这用的相对要少一点点啊,但是也会用到啊,这叫特定的。
05:13
然后这个说完之后,咱们再看第三种异常。第三个叫什么呢?写一下啊,它叫做自定义。异常处理,也就是说呢,咱可以自己写个异常,然后进行一个叫做处理啊,这个叫定义,也就是说咱们刚才不管你是这个异常还是什么exception,应该都是这个由系统自动抛出异常,但是现在比如说我们觉得异常啊,不满足我们的需求,我想自己写个异常,这异常不是系统自带的,是由我自定义的这个异常,比如说我们异常比如叫什么鼓励edu exception,或者叫什么其他名字,这个啊是我们要演示的第三个叫。自定异常就是自己写个异常,那这个怎么写给大家啊,咱先快速看一下,然后我快速来演示一下啊,咱先大概看一下啊。
06:05
先有一个直观的印象啊,咱们看一下啊,首先它的做法就是咱往下找啊,这是特定的。呃,这个名字应该写错,但是这个代码没错啊,咱看这自定义的它的做法就是呢,咱们自己建这么一个自定义议程类,比如说我这个叫鼓励exception,但是你需要让这个类怎么样继承一个类叫runtime exception,然后在类里边加上,比如说你异常的状态码,还有你提示信息啊,都加上,然后都加上之后还是在咱们刚才的这个方法中,我再加个方法,只是这位置咱加的是什么呢?不是exception,是你那个自己写那个异常类的那个名字,比如我们自己那个叫鼓励exception啊,咱加上他。然后都加完之后,最后啊,我们需要让这异常怎么去执行呢。因为这个异常系统不会自动抛出,咱需要手动给它就是抛出,就子肉妞这个鼓励exception啊,需要手动做到,这个是咱们。
07:09
自营异常的一个基本过程啊,那给大家我来写一下啊这个操作。咱来写一下啊。首先我再把这里面步骤写一下啊,首先它的第一步就是咱们创建一个自定义的异常类。啊,一成类让他来继承一个类,就是咱们一直说那个叫runtime exception。啊,T。啊,少个P啊CPP这是它的第一步继承,然后继承之后呢,咱需要在类中就是写它那个就是属性。啊,写它那个异常中的一些属性。就是比如说啊,我异常中有状态码,有提示信息等等,这是里边的第一步操作,咱需要这么来做,那我这里边给大家我来写一下啊,因为咱是啊,这里边所有地方都要用到,我还是放到。com里边。
08:06
在common中,然后把这打开。这是咱们昨天写一个包,那我现在啊,在这个包中,我就创建一个叫自定义的一个异常类,这个类我起个名字啊,我就跟我课件中一样了,就叫这个鼓励exception。把这个写出来啊,然后这个创建之后,咱们让它怎么样继承一个类。就是记上一个类。这个类叫做runtime exception做个继承,然后继承之后在里边呢,我们加上这个异常中的一些属性,比如说异常嘛,一般来讲肯定有它那个状态码,还有它那个描述信息啊,就加上这两个啊,这我就复制了啊。一个code代表你异常的状态码啊,价格出示。状态码,然后这里边的MSD是你那个异常的那个信息啊,这是我们加的两个属性,这是我们做的这一点啊,然后这做到之后,大家应该都知道属性是不是要对应的get和set方法呀,按照咱之前写的方式。
09:13
咱们有那个logo,所以我加个注解,就这个。啊,这样的话,它的get set方法都有了。这是我们写的一个异常处理类,但是这里边呢,咱为了方便大家注意啊,一个类里边是不是可以有它那个有参和无参的构造方法呀,那咱把它的有参和无参构造也都写出来,那怎么写给大家说一下啊,首先你可以单独这么去写,比如说我们直接啊,在里边直接给它生出来去写可以啊,但是现在我们不需要这么麻烦,在我们的logbook里边有那个注解能生成有参和无参构造啊,它有这个注解就咱之前没用过,咱现在用一下啊,咱找一下这个注解,首先第一个注解。
10:02
这个注解大家看一下啊,它叫orars contractor,它表什么意思呢?就是用这个注解能给你生成里边那个叫做有参数的构造方法啊,这是一个,然后还有一个注解,这个注解。就是它叫no as contractor,这是什么意思呢?它就能够生成那个叫无参数的构造。啊无参数构造,所以咱们用这两个注解生成我这个类的有参和无参构造,为了咱们后面就是操作方便啊这个啊是这两个不解,各位给他记住啊,Date是生成get塞的方法,这是生成有仓构造,这是生成无仓构造。啊,这个我们就完成了啊,是里边的第一步。咱用这个啊来给他。做到啊。就是这段代码。我把它呃给大家啊截过来啊。
11:07
嗯,稍等啊,稍微小点啊,放到这吧啊。截过来啊。就是他。然后这个写完之后,咱的第一步就完成了,我们写了一个自定义的异常类,让它继承re type exception里边有属性,包括有它的有仓无仓构造盖子菜的方法啊,这个都可以了,然后这个做到之后,咱下面操作就是跟刚才一样,还是来到我们这个,就是这个异常处理类中,在里边呢,再写上这一段方法,但是这个方法中这位置咱要加的是我们写的这个类,就是鼓励exception。啊,那我们再写一下,我把这个复制一下,咱们给它快速改一下,这叫做自定义异常,然后这里边加上我们那个异常,它叫做鼓励。Exception啊,这个位置也叫做。
12:03
鼓励exception。然后加完之后啊,在里边我们来做个输出啊,比如说这个输出中呢,其实你可以直接输一个名字是可以的啊,输一个值,但是咱为了明显,因为我刚才啊,其实写这个叫有参构造,有参构造中呢,其实里边有这个值啊,那比如说我就这么做啊,咱直接把那值给它取下。那咱这么写啊,我点上里边一个方法叫扣,然后我加一个叫1.get扣。不是,各位是否能看懂啊,这个E是鼓励edu exception这个对象,然后这个code有它get的方法,那咱把这code的值得到,咱一会给它传过来这个值。然后除了他之外,还有一个叫message,咱们也是1.get这个message啊,注意啊,这别写错。你这里边不要写那个叫啊,不要写这个。要写那个叫MICD。
13:02
啊,注意这个别写错啊,为什么写它呢?因为你看啊,我这属性是不是叫MG,我是特别为了区分所以叫MG啊,咱需要写它,为了一会儿咱写的就是更通用点啊,你写成固定也可以,只是固定的话后面没法改啊,咱写的通用,后面你传什么我就给你输什么值啊,这是我们做的第二部分,在你的这个类中加上这么一个规则,这是那个自定义异常处理。啊,这步完成了啊,我们的第二步。咱往下啊画一下。我写到这个位置啊,就是第二步,在我们那个异常啊,就是统一的那个异常类里边添加上这么一个规则。啊,就是咱们刚才写到这个,我可以走。这个啊,我们就做到了啊。然后这个做到之后,我们现在第二步就完成了,然后这里边还有最后一步,最后一步呢,咱就要最终去用下这个异常,就让异常最终去给他执行下啊,那咱看一下最后一步啊。
14:08
我写一下就是第三步。咱要去最终啊,去执行下这个自定义异常,那怎么执行,给大家写一下啊,首先第一个你要明确,因为这个异常不是由系统自带的,是由咱们是自己写的异常,所以系统它不认识这个异常,它不会给咱们自动抛出,你要让他执行,需要你手动给他抛出才可以,那怎么做啊,我们来演示一下啊,来到我们这个方法中。把这个还是CTRL的打开这个啊打开,然后打开之后咱们看啊,这一行代码是不是会有错误,那咱怎么做呢?我们给他就先把异常捕获一下,咱就加上一个最近的一个结构,就咱熟悉那个try catch。加上这么一个结构。
15:01
然后在catch里边呢,捕获它那个exception啊,把代码给他拿到这个会这边来。大家看这个结构啊,当你有异常catch是不是能捕获到,咱在这catch里边就是直接给它执行我们那个自定义异常。啊,自定义异常,那这异常怎么执行,各位注意啊,它不会自动抛出,咱需要手动给的就是。子肉new这么一个叫鼓励edu exhibit手动给它抛出,但是咱抛出的时候,这因为是new嘛,咱们刚才在里边是不是也写了一个有参的构造,咱为了这里边给它更通用,我可以把这值给它直接传过去啊,假如我传个。20001。然后写个值,比如叫执行的这个自定义异常处理啊,咱加上这句话。这是我们的写法啊,不说各位是否能看懂啊,我再说一遍,为什么可以这么写呢?因为咱们这个类中是不是有一个有参构造和无参构造,有参构造中是不是这两个参数啊,所以咱们可以传这个参数,然后传完之后你在这里边通过1.get,扣的1.gettmsg就能得到你传的两个值给你会中最终会做输出啊,所以我们现在这么来做,这就叫自定义这样处理,需要咱们手动给它择出去。
16:28
啊,建议各位给他知道啊,自定义的这种调用方式。我把它啊给大家也是分过来啊,就是手动给它植肉出去。啊,拿到这个位置啊。所以咱们这么做之后呢,咱们这个啊,最终的代码我们就完成了啊,关于这个叫自定义异常处理啊,它里边就是这么来写。这个啊,咱就写完了啊,然后这个写完之后,咱最终把它来做个测试,看一下我们最后的结果是怎么样的啊,因为这个代码已经完成了,最后咱就测一下就可以了。
17:09
那我来啊,最终测试。把它重启一下啊。就是如果说效果正确的话,最终输出的肯定是这句话,就是执行了自定义异常处理这句话,肯定最终会做输出啊,那我们最终看一下啊,是不是这个结果。服务器啊,已经启动了,然后咱们来到还是我们的swa里边,我先刷新。打开这个,我们调试这个方法,最后点tryout,大家看结果是不是就是我们刚才这个结果执行了自定义异常处理这句话是不是输出了啊,所以这个过程就叫做统一异常处理啊,咱们就最终演示完了,主要就是这么几个部分。啊,这咱们就做到了啊。这张图我先保存一下啊,然后最后我来最终。
18:02
快速总结一遍啊。最后总结啊,然后咱们看啊,就是在我们这个统异常处理,第一个你要明确它是什么目的呢?如果说你程序运行中有异常,默认情况下肯定会报一个500的错误,但是咱目前不让它出现500,而是出现一个统一一个提示,那怎么做?第一种方式叫全局处理,就是你写一个一个exception,不管什么异常它都会执行,这是第一个,然后第二个叫特殊或者特定,当你有特定异常会执行,比如说我们刚才这个不能为零啊,那它就是执行这个异常。然后还有第三个叫自定义,就是你自己写个异常,比如我们刚才写的方式就是自己写了一个异常处理类继程runtime exception,里边有状态码和异常信息,然后第二步在这个统一中加上这个规则,就加一个鼓励有exception,但是因为是定义的,系统不会自动抛出,需要咱们手动执行,那我们就手动要new这么一个鼓励exception传入你的数据,最终可以调用啊。这是我们说的统一异常的三种方式,第一个叫全局,第二个叫特殊或者特定,第三个叫自定义。
19:20
这个啊,我们就完成了,就是统一异常处理,主要这么三种情况啊,在实际项目中这个应该都会用到,而大家用的比较多的,应该说选举用的很多,定义用的也很多,特殊相对少一点点啊,但是也会用到。啊,这几种大家都要给他能够把效果做到。啊,咱们就最终演示完了啊,这么几种情况。
我来说两句