00:00
接下来我们继续来讲一讲Java异常的处理,那么我们之前啊,已经把Java异常处理的基本语法呢给大家介绍了一下,我们接下来呢,把异常对象咱们说一说啊,这里我们拷贝,拷贝以后呢,我们写上一个零三,然后点击OK,把里面的这些东西啊,咱们给它全去掉,好去掉去掉以后我们首先给大家讲的就是我们之前提到过的那个叫除数为零的算术异常,所以呢,我们这里写上一。啊,咱们叫除数为零的算术异常,那么这个算术异常呢,我们写上int I,它等于零,然写上一个int勾,它等于十,再除以I,点完了以后,同学们,我们现在运行的话,就一定会出现咱们之前的异常,对吧?诶,这个异常呢,我们就是除数为零的算术异常,咱们拷贝它是我们Java浪包里面的一个异常,其实啊,这样的异常大家想一想,我们完全可以通过编程的手段来避免它,对不对?你不说了吗?除数为零,那我能不能在做这个运算之前我先做个判断呢?我写上一个if,我们叫做I,它不等于零的时候,我们再做这个运算就行了吗?同学们对不对?
01:03
所以啊,这样的异常呢,它重属于我们的运行期异常,所以咱们说一下啊,来咱们的运行期异常,运行期我们的异常,这种异常呢,我们的加va虚拟机是不会让你显示的做出处理的,只要你出了错,你通过编码一解决,重新编译,重新运行,不就不会出现错误了吗?对不对,所以我们的加用虚拟机它不会做任何的提示,我们这里呢,来拷贝一下来同学们,我们找一下,可以找到这边打开以后呢,我们去找到我们对应的一个关系,我们找一下。好,完了以后大家会发现它就重属于我们的runtime exception,我们之前提到过,所有的runtime exception我们都不用去提示做出任何的处理的,只要报错了,你通过程序解决就可以了,对吧?哎,这就是我们除数为零的算术异常,还有一个呢,我们之前也提到过啊来咱们说一下咱们的二,嗯,好了,然后呢,把这个呢,我们给它注掉,好,我们之前不提到过吗?我们有一个对象,我们写上它,咱们叫class,我们叫做USER3,好了,写完之后我们在这个地方写上它叫U3,它等于U等于,那哎然好了,我们接下来我们写上,写上呢叫u.to使string方法,我们这个地方一定会出现什么错误呢,我们叫空指针异常,这个咱们之前提到过,对不对,我们说一下,咱们叫空指针异常。
02:21
这个空其实说的就是这个,那这个,那我们今天提到过这个,那呢,表述的是这个对象引用为空啊,为空它没有指向内存中的任何对象,那么如果你没有指向内存中的任何对象的话,你就找不到它对应的这个方法,它根本就无法执行,对不对,不就这意思吗?所以这样的话也会导致我们的程序出现错误,所以所谓的空指针异常就是什么呢?调用了一个为空对象的属性或方法时啊,就会发生我们的异常。记住啊,这个所谓的为空的这个对象指的就是我们的,那就是这样的,所以呢,我们现在运行一下,你看结果运行以后大家看一下这个就是我们的空指针异常,把这个复制一下。
03:06
复制过来以后大家看一看,哎,就是我们的所谓的空指针异常啊,这个叫pointer,我们叫做指针也是可以的,叫做一个点也是可以的啊。这个的我们的non pointer exception就是我们所谓的空指针异常了,哎,老师,那我们这个空指针异常它是我们的哪一个分类呢?是我们的运行器异常还是我们的BA异常啊,所以呢,我们这里来看一下拷贝,拷贝以后呢,我们来啊,咱们找一下,咱们点,点完以后咱们找一下,大家看一下我们的这个异常不就继承了runtime exception吗?所有的运行其异常其实都是我们的runtime exception对不对?所以啊,它都不会给你提示你出错了,你改一下就行了,这个怎么改呀?很简单呀,你是调用了一个为空对象的属性和方法,那如果你要不为空不就没事了吗?所以我写上一个if,如果你的U它不等于,那我们再调用没问题了吗?所以我们拷贝一下,我们翻过来,诶,我们运行一下,运行运行以后我们看结果,你看就不会出现任何的错误了,只是他走不到了而已,对不对。
04:09
哎,老师呀,那这样的话我们就没有必要加check开了呀,不是同学们,我再说一遍,我们前面的除数为零的算术异常,包括我们这个对象的这个判空操作呀,其实你是需要考虑一个问题的,什么问题呢?同学们,就是说我们的正常逻辑应不应该做判断,什么意思啊,你是加了一个判断,但是逻辑上你是不是不应该加判断,为什么?因为我们从正常的逻辑当中,你获取到的数据,它就不可能为零,那如果你为零的情况下,你是不是应该提前发现这个问题,而且应该进行对应的处理啊,同样道理,我们这里的对象,如果你说了我的对象就不可能为空,那好,你还为空了,是不是说明前面有些地方发生了问题呢?所以啊,同学们,有些问题我是需要提前发现,提前解决的,你不能说我加了一段逻辑之后,它不出问题了,他不出问题了,在后面用到了这个优点,不还会出问题吗?我们问题啊,咱们越早发现越好解决呀,你越往后发现,你的影响面就越大,那么就不合适了,对不对?所以有的时候是这个样子,同学们我这么写是对的,但是我们其实也可以加上什么,我们的TRY,我们写上它叫catch,然后呢,翻过来把我们的这段代码呢,我们给它拷贝过来。
05:19
宝贝过来以后,我放到这个串里面去,因为它可能会发生问题,然后呢,我把这个空指针异常呢,我放到这里面好给这个E,然后呢,我们去什么呢?诶做一些我们的操作。啊,我们写上啊,我们的对象为空啊,为空我们需要啊,需要分析数据为空的原因,对吧?哎,就是这意思说你需要这么去做。不是说我们的运行提成你就不用加这个try cat了,只是看情况而已啊,同学们,这个咱们需要注意一下,我运行运行以后大家看结果就会提示我们相应的问题,我们就可以去找一下了哦,对象为空怎么怎么着,我一分析不就完事了吗?还有一个地方,同学们就是说到空指针异常了,咱们再说一个特例啊,什么特例呢?什么叫空指针异常,调用了一个为空对象的属性和方法,同学们记住,就说明你当前的这个属性和方法是跟对象相关的,这对象为空,你访问不到就出问题了,但是我们之前学语法的时候,我们学过这样的一个语法,什么语法呢?大家看一下,我们叫public,我们叫static,我们叫做string name,它等于啊当三好了,你选完了以后,我们在这里呢,不用去to string了,我直接来给它变一变。
06:30
我把这我变一变,把它改成什么呢?我们的name这么写,完了以后,同学们想一想,现在还会出现控制针吗?哎,老师这不还是个nor吗?如果它是个闹的话,现在你运行你会发现我们这里不会出现空指针异常,为什么?因为我们静态的属性跟对象没有任何的关系。所以说你的对象的引用为空,对我没有任何的影响,所以我们这里需要加上一个限定条件,调用了一个为空对象的什么我们叫做成员A属性或成员方法时就会发生异常,为什么呢?就是因为我们的静态属性和静态方法跟我的对象没有任何的关系,所以即使对象为空也不会发生任何的错误,对吧?同学们,这就是我们对语法的一种理解啊。
07:15
好了,我们先把这两个异常给大家介绍一下。
我来说两句