00:00
好,那两种处理方式讲完以后,咱们再往后看的话呢,就涉及到这个支点叫手动抛出异常,手动抛出异常前面咱们讲了,说这个张二中呢,叫抓抛模型。叫抓方模型,第一个过程呢叫抛,第二过呢叫抓,咱们呢给它理解为呢是异常处理的两种方式了。啊,那么咱们回过来看这个抛的事儿啊,这个抛到目前为止咱们出现的叫控制帧异常啊,这个这个角标越界呀,Class class exception啊等等,是不是都是我们程序运行的过程当中,它自动的出现异常的话呢,去用这个对象啊对,把这种目前为止咱们出现的这个异常对象的情况呢,咱们都这都叫做呢,叫自动生成的啊,所以这我这样写一下啊,就是关于异常对象的产生。关于异常对象的这个产生,产生的话呢,咱们到目前为止讲的呢,都是系统在出现异常的时候呢,自动生成的异常对象,系统自动生成的异常对象,这是到目前为止都是这样的,那除了这种方式之外呢,我们说还有一种方式,还有一种方法呢,叫做手动的,我们去抛出一个异常,或者叫手动的生成一个。
01:26
手动的这个生成。一个。哎,这个异常对象,然后呢,并哎抛出,这个抛出呢,大家有时候可能会跟咱们下边说的这个Rose呢,整混了啊,所以这个抛出的话呢,我用的这个叫肉。并抛出,这个用的叫肉,这个这个英文呢,咱们翻译成中文这块呢,写的有点苍白了,就我把这两个呢都写成叫抛出了,但是别晕了,这个死肉呢,你看看在哪呢,是咱们说的这个抛的这个过程当中,关于异常对象的产生的一种方式啊,叫手动的产生一个异常对象,而我们这个roses呢,是处理异常的一种方法,这个最后咱们总结一下,我找同学呢去说一下,说这两个有什么区别,刚才我说过了啊,哎,这两个什么区别,你可千万别一上来说这是复数,这单三是吧,这这这这就太业余了啊行,那这呢叫抛出。
02:28
那有的同学可能会想说,这个异常啊,咱们巴不得它不出现,因为你出现了,咱们还想着办法去给它拆开啊,或想着去Rose啊,给它处理掉,然后你这块呢,还怎么还自己去造一个异常对象呢?这是不是有病呢?没有病,就是有些情况下呢,咱们确实还得去抛一个异常啊,肉一个异常,那举例子。举例子呢,我这块再新放一个包,这有点这有点多了啊。行,这呢,我们举个例子,叫student的一个测试啊。
03:04
好,在下边我写一个class叫student行,这个student的话呢,我们每个人都会给它设置一个学号,或者写成in型了啊,叫ID,然后呢,我们通过一个方法public word叫啊register这个注册,这个我们也给他声明成一个private了啊,然后我们通过这个注册的方法呢,给用户呢去附一个学号,这样的int,正常来讲的话呢,我们附这个学号呢,你首先得是个正数了,那我们这里边就做个判断了,说如果我们这个ID呢是大于零。那这时候我们就z.ID呢,就等于ID了。就复成功了,付成功了,那你要是没有成功的话,就是你要是个小于等于零,原来的话呢,咱们这块可能会写个C说呢,诶您输入的这个数据啊非法。
04:01
就是你是被负数了,这个写了一个叫非法了,但是你这样要非法的话呢,其实只是没有负值而已,它的值相当于还是一个零成这样了,那咱们在这块呢,进行一个测试,这块我们进行一个测试,测试的话呢,我们得去new一个student,诶好,然后接着S点我们去做这个操作,我写个1001。哎,这就相当于给人家附上了,附上呢,这个位置我们加一个图方法al shift s,哎,关于ID的行,这就搞定了,搞定以后我们附上以后,我这呢去打印一下S。哎,这呢是没有问题的啊,给人家附上了,但是这时候呢,假设我们这时负的是一个负的100。那这时候呢,我们仅仅的是能够去做一个输出的一个功能,别的干不了,但是这时候呢,你还是出来这个结果了。正常来讲,这时候你要是输的非法的,我直接就让你报错了,所以此时呢,我们就可以不去选择这种用sit out了,我们可以在这个位置呢,叫手动的抛出一个异常对象,这呢就咱们自己让它生成一个异常对象了,那自动生成怎么写呢?这个我们就是用了另外一个关键字叫做肉。
05:20
千万要小心没有S这个肉后边呢,我们去抛一个异常的对象,对象呢是我们手动创建的,那就是U一下,那拗谁呢?拗呢,那就咱们得看当初讲的这个异常的体系结构了,那这这里边可以拗它可以拗它,这这这个就别拗了啊扭这个的话有点太过分了,太顶级了是吧,就不要跟那个error相关了,你要拗拗最大的是不是也考虑用拗它了,哎,它可以考虑,剩下的话呢,你这个IO啊什么,这这就别想了,本身你也不是一个文件找不到的异常就别往这块去按了安了,呃,就是通常我们这时候new的话,要么是new,它要么呢是拗,我们这个运行时以上就是只能你就从这个和这个里边去选就行。
06:06
像这些呢,你也别选了,你本身你也不是一个这个这个数独叫月月界,你也别扭它了,就啊,那这时候我们拗一个,比如我拗一个先扭个runtime吧,看exception。哎,这个runtime exception的话呢,它有一个构造器呢,是带行参的out斜杠一下,这个行参的话呢,就是一个message,这个message里边写什么呢?我们可以还写成这句话,其实你看到这个message不知道有没有点感觉哈,就是咱们这个呢填那个message,咱们呢讲了个异常处理,有一个方法叫get message是吧,其实这个呢,不就相当于就给你这个类里边那个属性做了一个赋值,通过构造器呢给属性赋值了,我们get message呢,就是那个属性的那个get方法。你这块写的啥,我们下边呢,就能拿到了就啊。你看我这呢,就throw了一下,YG呢,就是如果你要输入的是个负的,我这就抛异常了。
07:02
这抛异常了,诶按说这块呢,是不是就该考虑处理了呀,怎么他也没报错呢。因为你这抛的是不是一个运行时异常,诶这个原因啊,诶因为呢,运行时异常咱本身呢,说大家也可以不去处理,所以说你这块我就不处理了,也没有问题,那你要真的写错了呢,写错了你就报错呗。这不就报错了吗?是吧,您输入的数据非法,这不就咱们自己写的这个信息吗。就这样了,但是呢,你要说我我就这个这个想让他这个处理一下,那你这时候你可以不去肉汤了,哎,我们呢,可以让他去死肉那个exception。哎,Through它你要through ex exception的话呢,这个exception它可不是说是一个运行时异常了,它就把那个编译的那些也考虑在内了,所以就是需要我们显示的是不是得处理了。哎,处理怎么处理啊,诶你可以选择呢,用一个,比如我这时候我就不想在这try catch了,你可以呢,Rose一下,我点一下自动的就帮你生成了。
08:07
这呢体现的叫异常的处理,在方法的声明处,这呢体现的是生成一个异常对象,是在方法内啊这呢我都在给你储备,这这个怎么去解释这两事儿啊,然后这个呢,我们就throw这块呢,我就给你处理了,是不是就处理到这了,你这个throw了到这儿了,到这以后的话呢,我们一看说诶那我给你拆开去得了,我们就这样把它呢整体一包,点右键有一个surround位置拆开始block,诶把这个呢我们干掉。哎,是不是就这样处理了,处理的这块呢,比如说咱们刚才说的这个事了,我就不用它了,我就用一个叫this out一点get message。其实这呢,就是你那个message来我们这相当于是这个message属性的一个改的方法了,这样子来我们此时呢执行一下,OK,那这时候呢,没有这这是咱们那会出现的问题啊,把这个你关掉就行了,然后此时的话呢,这个程序就就正常输出了,就是把异常给处理掉了啊,但是由于你现在填的是一个负的1001,在这块呢,出现的这个异常,我们这个语句呢,就没有执行,直接呢就蹦到这块,你的message呢,就是这个message。
09:23
哎,就是这样一个情况,通过这个的话呢,大家就主要看这个位置就可以了啊,就是我们在程序当中有时候呢,确实还是需要写一下这个叫throw手动的抛一个异常的。哎,可能会出现这样的情况,再举一个例子,咱们昨天写代码的时候。咱们昨天讲的那个接口。讲的接口,诶这不就在这吗?咱们讲这个接口的时候回忆一下啊,这呢,咱们有一个叫compare object,这不是咱们写了一个这样的方法,叫compare to,就是比较两个这个圆的大小,咱们写了一个叫comparable的circle口,对,就是可以用于比较大小的这个圆,然后咱们这有一个comp图方法说呢,调这个方法的圆和你这个形态,这个圆呢,看看谁大谁小,哎咱们呢,根据这个返回值呢去判断,咱们写了一个逻辑,就是说你这个O呢,你要是一个这个circle,我们这块去比,你要是不是一个circle,这不就蹦到else这了,咱们当时的话呢,这不是我写了一个这个操作吗?哎,这是说咱们后边会讲,是不是今天就讲了,就在这个位置的时候呢,你要是不用这个throw,那你这块还必须得有一个返回值,那你也没有别的选的,你只能是RETURN0,但是你要是RETURN0。
10:40
容易被误认为呢,对是一个圆,只不过呢,你俩相等了,那其实不是太合适啊,那这时候呢,你就不应该去RETURN0,但你不RETURN0还不行,那这时候呢,其实就适合呢,使用咱们的叫throw,诶咱们就相当于是诶手动的让它抛一个异常,告诉你说类型不一样啊,不行,哎就是这样的一个情况。
11:05
哎,就这样个情况,实际上说白了,说白了什么呢?就是咱们呢,那会儿讲的说像这个这里边儿这儿或者这儿是不是它本身可能会报异常,只不过呢,就是咱们呢,去调这个方法的时候,它里边呢写这个东西了,或者它里边呢会出现这个东西,所以说呢,他处理了,到咱们这儿呢,咱们就得处理,然后他呢是谁呢?他是就是写JDK源码的这帮人,这帮人呢,他里边用肉了。所以到咱们这儿呢,咱们就得考虑用throws了,哎,这叫异常的处理,然后呢说诶它呢有的时候会用肉,说咱们呢,其实有时候也可以用肉,咱们呢也可以去让它生成异常对象,就是这个意思啊好体会一下咱们刚才说的这个叫手动抛出异常这个事情。这个事情大家去体会一下,好,这个听一下。
我来说两句