00:00
大家好,我是海波老师,我们接下来继续来讲我们Java语法中的异常,那么我们刚才啊给大家讲过了,我们当前的这个异常啊,我们可以自己去构建一个异常的对象,然后呢去转换我们的异常的类型,其实啊,这些异常呢,都是我们加入语法中事先定义好的,但有的时候呢,并不能够准确描述出我们异常的场景,尤其是我们业务中的场景,比如登录的时候啊,咱们的账号和密码呢,它不正确,那么这个时候肯定会有问题吧,对不对,那当然我们这只是举个例子啊,那如何描述这样的一个错误呢?Java中并没有这样的一个具体的错误的类,所以如果我们想要准确描述这个错误的场景,就需要我们自己来定义常来描述这个场景,来我们操作一下,我们这里呢,把这个程序呢,我们拷贝一下,我们写上一个JAVA0啊,然后呢,点击OK,然后把这些东西我们都去掉。这里呢,我们就写上一个,我们叫做public啊,然后呢,我们写上static到我们的VO,然后写上一个叫log in,我们叫做登录好了,那么登录的话你不得传两个值吗?一个叫做字符串,我们叫做account,叫做账号,还有一个呢,我们叫做password,对不对?诶我得写上它,写上它了以后同学们这个时候我们需要注意一下干嘛呢?我们的判断我们的账号和密码是否正确吧,所以我们就写上它if,如果呢,我们的账号,哎,咱们写上它叫in,咱们点一下叫equals equals用来比较字符串是否相等啊A,我们的count咱们就放这里,放到这里以后如果它不相等的话,好提示你错误信息了,所以这个时候我们应该有一个异常产生,对吧?那同样道理,我们再写上if来,我们写上它,如果我们的密码它也不是ain,它也是一种错误嘛,所以我们password好了,那我们这它也会有一个错误产生啊。
01:48
我不管你是什么样的错误,其实都是跟登录相关的嘛,所以我这里写上一个叫class,我们叫做log in叫exception,什么意思啊,同学们就是跟登录相关的这个异常,哎,所以我们说一下咱们叫todo。
02:06
那你随便写个类就能叫异常了吗?肯定不是,这个时候就要取决于你的这个异常需不需要提醒了,我们的这两个值我们需要提醒吗?我们不需要提醒,为什么呢?因为他写的不对的话,那其实不能叫错误嘛,他只能说我们的这个账号密码输错了嘛,业务上应该不是什么错误,只是说你的密码写错了而已,所以这个是不需要提醒的,所以呢,我们就来我们继承,我们叫做runtime exception对吧?然后呢,我们在这里呢,我们写上一个我们的构造方法来拷贝,拷贝以后呢,我放到这边,然后呢,我们这里写上一个叫string,我们叫message。好,然后呢,我写上一个super,我们叫做message,把它传进去,因为啊,咱们的负类呀,都可以传一个错误的消息,对不对,所以我们这里怎么做好了,这么写完了以后,但是我需要具体呀,我们的这个叫账号的这个错误呀,这个叫做密码的错呀,所以我再来写上,我们叫class,我们叫做account,咱们叫exception,哎,好了,那我们再拷贝一下。
03:06
写上它,我们叫做我们password exception。好,写完了之后呢,同学们,我们需要注意了,我们的这个account和password其实都是跟登录相关的吧,所以我们的登录的范围呢更广一些,所以我继承一下,我继承我的log in,我们的exception,好,然后呢,我们这边呢,也给它去继承一下就可以了,所以我们拷贝,拷贝完成以后,那么这时候呢,我们需要把它的构造方法咱们改一改,A,我们放过来,我们这里呢放过来啊,这个呢,我们的名称我们替换一下,把名称我们替换一下,这样的话就可以了,接下来呢,我们就准备来用一下,我们这里写上它,我们叫throw,诶,我们要抛出异常了,因为你的户不对呀,Do new,我们叫做account exception,然后呢,我们就写上它,我们叫做账号不正确对吧,我们这么写就可以了,好,同样道理,我们这下面也给它写上,咱们叫throw,我们的new,我们叫做password,诶,Exception,然后写上它,我们叫密码不正确,诶这样的话其实就可以了,同学们。
04:10
如果他们都是正确的话,那么下面我们就写上它,诶咱们叫做登录成功不就行了吗?登录成功可以了啊好了,这个方法我写完了,咱们来验证一下,首先我这里写上它,什么叫string,我们就叫account,哎,我们写上它,咱们叫张三好了,写完了以后我再写上一个叫password,然后呢,我们等于密码123123行了,写完了以后我写上一个login,把我的账号呢,我们的密码呢给它传进去,传进去以后,现在我们来运行看一看效果,运行。运行以后大家看效果,你会发现我们当前是肯定会发生错误的,这个错误就是我们自己定义的那个错误,咱们叫做账号不正确对不对?这个账号不正确呢,就是我们前面在构造的时候给他传了一个我们的字符串,诶把这个异常对象给我构建出来,在咱们的这个地方给它抛出去,抛出去以后呢,诶,它就会再我们调用的时候出现这个问题,没错吧,同学们,这就是我们给大家演示的自定义的异常,诶老师呀,那这个异常我不做处理的话,那不就整个程序就崩溃了吗?我还是应该做处理啊,所以这个时候呢,我们就应该加上一个TRY,我们的cat写完了以后呢,把它我们拿过来放到进去,放进去以后记住同学们,我这里可能有一个account exception,有一个叫password exception,所以呢,我的account exception呢,我就放到这里,我们就写上account对吧,然后呢,我们就写上它,诶来我们写上,嗯,咱们的这个账号不正确,诶不正确需要重新修正啊,重。
05:41
重新修正对吧,我们这么说一下就可以了,按道理呢,我再来一个cat,我为什么又要个cat呢?因为有两个异常啊,那这个方法可能会抛出两个异常对不对,所以呢,我们再来一个啊,我们写上一个它我们叫password,我们就叫password就可以了,好把这个呢,我们给它复制过来,复制过来以后呢,我们说一下叫密码不正确,密码不正确需要重新修正。
06:06
第项我们可以再来一个catch,万一你登录的时候可能出现了一些别的异常呢,所以呢,我们也可以给它写上叫log in exception对吧,这么写,那么写了以后我们再给它拷贝,拷贝以后我们写上它叫我们叫其他登录的相关错误啊,我们需要确认,哎,这么写就可以了。好同学们,我们现在呢,把这个代码呢,就全了一下,我们增加了我们的多个catch对不对?好,我们运行一下,运行以后看结果你就会发现我们当前是账号不正确,需要重新修正,诶那我修正一下吧,把这个改成din对吧,改完了以后,我现在运行一下看结果会发现我们当前的处理当中密码不正确,需要重新修正,所以呢,我们这里来把它改成的mi,改成的密以后,我们现在运行,运行之后就没有问题了,因为当前的登录就是看账号和密码,他们只要正确了就可以了。
07:00
所以我们把这样的代码补全之后,我们的程序就更加健壮了,对吧,只不过呢,我们这些异常呢,不是我们Java提供的,是我们自己来写的,其实相对来说比较简单,就是继承我们专门的类就可以了,哎,老师啊,那这里如果不继承runtime可不可以呢?可以啊,如果你不继承wrong time的话,就有一个问题了,来把它去掉,去掉以后大家看一下你的这个位置就有问题了,为什么?因为你没有明确的告诉这个方法,需要抛出这个异常,所以呢,我们需要来写上叫throws,我们它我们叫can't exception。是啊,我们说过了,我们的运行期异常你不用做任何操作,是我们的A期异常,你就需要做操作了,所以我们写个逗号,诶把这个呢拿过来password,你这么写其实就可以了啊,所以说你这么写没有任何的问题,而且呢,还有一个,所以我们的这个account exception和这个password exception,它都是我们log in exception的子类啊,所以我们这里呢,其实我们这么写也行,咱们叫做log in。
08:02
你这么写也没有任何的问题或者意思吗?同学们,就是说我们的异常之间啊,它有范围大,有范围小,我们可以抛出范围大的,也可以抛出范围小的,只不过抛出小的话,有几个你抛几个,那范围大的话,那我们抛出一个可能就行了,这个需要大家注意一下,别的就还好啊好,同学们,我们自定义的异常类,我们就讲到这里。
我来说两句