00:00
大家好,我是海波老师,我们接下来继续给大家讲Java中的异常处理,那么我们这里呢,我们来拷贝啊,咱们写成一个零五,咱们继续给大家讲一下我们常见的异常,我们点击OK,点击OK以后,我们把这个咱们全去掉,我们接下来给大家讲我们的第五个异常,那么我们之前给大家演示过一个错误什么呢?我们的字符串啊,写上一个,我们这边有个叫123,然后呢,我们写上它,我们叫integer,我们写个I,它等于我们的integer,我们写上一个S,这样的话我们说过了,它标了一个红色波浪线,这个不叫异常,它叫做我们的错误。我们在idea当中啊,它语法如果不符合加入的语法规则的话,它会提示我们的错误,就是用红色波浪线。为什么呢?因为我们讲过,咱们加号中两个类型之间如果想要做强制转换的话,需要他们俩有关系,要么是父子关系,要么是实线的关系。我们的字符串和这个引提格他们之间没有任何的关系,所以他们是无法做强制类型转换,对不对?但是我现在就想让一个字符串转成整形数据不行吗?你不是123吗?我就想把它当成数字123难道不可以吗?当然可以了,咱们当时给大家讲那个包装类的时候,不提过这个事情吗?我们可以有专门的方法来做这个事情吗?所以我们的in t表它有一个叫pass in,把这个字符串给我放过来。
01:20
放过来以后,同学们这样的话不可以了吗?所以我们打印一下,打印我们当前的这个整数,所以我们运行一下,运行以后大家看结果,你就会发现这个没有任何的问题,对不对?诶老师这也没有异常啊,同学们有异常的,为什么呢?因为字符串里面想写什么就写什么,你能保证它一定是个数字吗?比方说我写个A。你如果写了个A以后,同学们想一想,那么这个时候的话,它还能转成数字吗?对不对?所以我们运行一下看结果你会发现当前就会出现一个叫number format exception,所以我们拷贝我们给它放到这里啊,咱们叫做格式化异常。就是我们转换数据的时候出现了错误,哎,老师啊,那我们出现了这个number form exception,我们该如何做处理呢?这个呢,我们需要一个正则表达式的语法才能够实现它的校验,校验以后如果全都是数字才能做格式化,正则表达式的相关语法呢,我们大家可以去看我们完整版的Java视频,我们这里就不做过多介绍了,我们就是告诉大家,我们在这种情况下是可能出现一个特殊的格式化的异常就可以了啊,那好,除了这个以外,咱们再来我们这里写上啊咱们的class,然后呢,写上一五。
02:31
然后呢,我们写上它再来一个class,我们这叫做emp,我们写上一个五好了,我们这里创建一个对象,咱们就object给它来,我们等于new,我们叫做U5啊,写完了之后呢,我们用起来不方便啊,怎么办?我们把这个object呢做个类型转换,我们写上叫EMP5等于emp,等于强制类型转换,我们的EP5写上一个object就可以了。因为啊,咱们的object呢,和EP5呢,他们有上下级的关系,有父子关系,所以他们两个做转换是可以的,但是大家记住了,我们的实际对象呢,是个U5,他们俩之间其实是没有关系的,但是由于啊我们做了一个多态操作,我们的object跟它有关系,所以语法上是允许的,但是你在运行当中,当前就会出现错误,不过呢,我们先把前面的代码呢,咱们先注掉啊,然后呢,我们接下来呢,我们给它来做一下操作运行,运行之后大家会发现我们这里还是会出现错误,咱们叫class cast exception,所以把这个错误呢,我们给它拿过来,这个错误呢,就叫类型转换错误,咱们叫类型啊转换错误好了。
03:38
他们俩没有任何的关系,你是不能做转换的,这个操作咱们该怎么通过我们代码的方式来解决呢?其实啊,咱们这样做,咱们有一个if,然后呢括号,然后呢,我们的这个对象啊,咱们叫object,有一个方法叫instance of,判断一下它是不是我们的EP5,不管它是我们的EP5的话,你把它做转换做是完全可以的。
04:01
如果它要不是的情况下,不用做任何转换了,所以我们运行一下,运行运行以后大家会发现我当前程序就不会出现任何的错误了,只不过我的程序代码走不进去了,为什么呢?因为这个条件它并不满足,所以啊,我们的类型转换,它包括咱们前面的格式化异常,他们都属于我们通过编程的手段可以解决的异常,他们都属于运行期异常。
我来说两句