00:00
大家好,我是海波老师,我们接下来给大家讲一下我们Java中反射当中的一些异常啊,那么咱们之前啊,给大家做了一个反射的练习啊,那么这个练习当中啊,咱们调用了很多的方法,嗯,当时呢,我们为了方便呢,我们直接呢在这里加了一个throw exception是因为啊它的异常呢还是比较多的,所以我们接下来呢,把这个异常呢,我们稍微的来看一看啊,咱们拷贝拷贝以后呢,我改成我们的零四啊,然后把这个改成我们的叫做exception,好了,我们点击OK啊,OK以后把它改一下我们的零四啊,把这个改成我们叫exception,嗯,行了。改完了之后呢,我们之前不用管它啊,咱们这里改成一个四就可以了,好嗯,行,接下来咱们一个一个看啊,首先我们的第一个,咱们的第一个呢,是获取我们当前的class的一个类型,这个呢,咱们之前是提到过的,我们可以通过一个点class来获取一个我们的class,但其实呢,我们还有另外一种方法是什么呢?叫做class.name。我们通过一个字符串也可以得到我们的类型信息,所以我们点一下VR回车,回车以后这个class它是没有本质区别的,只需要把这个tra你放过来,然后呢,我们点一下我们这里写上一个我们叫EP,其实就可以了啊。
01:12
以这个地方是拿一个类型,这个地方是拿一个我们的字串,其实也可以这样,咱们叫new emp.get class也可以点一下,对啊,获取的其实都是同样的类型信息,这样吧,咱们一个一个试一试啊,这个注掉掉以后诶。嗯,这个名称我们都变一下吧。全都给它变一下,把这个呢给它来。好了,定下以后呢,把这个先打开好了,我们打开以后呢,我们运行一下啊,运行以后看结果,你会发现结果没问题,好,我再把这个呢给它做掉,做掉以后把这个打开好了,我们现在呢,就写上一下我们运行,运行以后看结果,你会发现结果呢也没有任何的问题,对不对?所以啊,三种方式呢,都可以获取我们当前的类型信息,前面两个咱就不说了,咱们主要说我们这个方法,这个方法为什么要说它呢?是因为我们这里呢,它其实会有一个异常发生,我们点一下它里面有一个叫做什么呢?叫class not found exception。
02:07
你通过一个字符串来加载一个类,这个类可能是不存在的,所以咱们写上它,就是我们写上它啊,类找不到异常啊,你找不到这个异常啊,就会出现问题啊,就是这样好了,这是我们的第一个异常啊,咱们再往下,往下以后我们来看一看,我们的第二个叫做什么呢?叫get,我们的declared constructor,点一下看完了以后,他就会告诉你有一个叫no such method exception,没有这样的一个方法,什么意思呀。你现在想找一个构造方法没有啊,他就没有这样的方法,那你说可不就出现问题吗?所以我们叫做什么呢?叫做方法找不到,叫做什么呢?叫做没有啊,没有方法的异常。对吧,这个呢,就表述了这么一个含义,好接着往下,下面呢,有一个叫new instance,我们点它一下,点看完以后,你会发现它里面的异常还是非常多的啊,比方说访问异常了,刚说我们的调用异常了,以及我们当前的参数异常,这里面很多我就不一个一个给大家说了,这就意味着当咱们创建对象的时候呢,其实会有很多的问题啊,咱们就把咱们的这个拷贝过来吧,就是参数异常啊。
03:18
啊,咱们叫参数异常,咱们叫参数异常什么意思啊,你构造一个对象,你的参数传的不对,不就出现异常了吗?对不对,就是这个意思啊,所以呢,这个还是比较好理解的好,咱们再往下,往下呢,有个叫get field,我们点一下点点击完成以后,你会发现它也会发生一个这样的异常,叫no such field exception,所以啊,咱们拿过来。拿过来以后,我写上它,咱们写上这个no such field exception,就是我们的什么没有属性的一张。你想获取某一个属性没有取到啊,你这里呢,是获取方法没有取到,这里是获取属性没有取到,你看不都是一回事嘛,对不对啊,就是这样啊,然后下面的这个site呢,我们点一下点点击以后,它也会抛出这样的异常,不光是它还有这个东西拷贝。
04:09
写上一个五啊,然后呢,写上它这个异常是什么意思呢?Illegal access exception,它表示的是权限异常叫做什么呢?叫访问权限异常,什么意思啊,你的这个属性或者方法,你没有权利访问,你还去访问它就会导致这样的异常产生啊这个咱们前面提到过一个权限的概念,对不对,诶,好了啊,下面呢,是我们的get method点一下这个呢,我们前面说过了,叫做no such method exception,好,不说了。再往下有一个叫invoke,那么这个invoke方法呢,他也会有一些异常,比方说我们的访问异常啊,我们的这个参数异常啊,还有一个就是我们调用的目标不对了啊,所以拷贝。宝贝以后呢,我们拿过来啊,咱们放到前面啊,咱们想它,咱们六嗯行放过来,什么叫做调用目标异常,有没有发现我们这里异常其实还是挺多的吧,所以啊,我们看到这个异常呢,你得大概知道它发生了什么问题,你得对它做相应的处理,我们当时啊,只是为了给大家演示方便,所以我在上面呢,直接就加了一个throws exception,那么真正在开发的时候,我们应该对不同的异常做不同的处理,对吧?好了,我们反射当中的这个异常呢,我们就说到这里。
我来说两句