00:00
好了,那咱们这块呢,诶两种方式啊,我们说了一下,咱们继续再往下看啊来这是一个理解的exception test,零七来咱们接着看。我们来深入一下try catch啊,深入try catch p SM。就不用我说了,各位可以写ion,也可以写其他的notion都可以写是不是,哎,还可以写poion,这都是可以的,对吧?哎,对于我们这个ROS来说啊,没什么可说的,对吧,你写精确的也行,你写一个也可以无所谓,来复制一下贴过来。来这块你写一个对吧,也是也是可以的,嗯。这是我们所说的try catch,各位啊,Try catch。那呃,不不,这是我们所说的Rose啊,错了,那try cash是怎样的呢?
01:01
来,比如说我们在这里啊,注意听了啊注意听。嗯。现在在这里呢,我们new一个什么呀,叫做file input stream,然后括号里边我们需要跟上一个文件的路径,这个文件路径呢,我。我再拿过来吧,从这边啊拿个文件,这个文件呢,哎呀。这个文件的路径啊,我随便给一个啊,就这个吧,拿过来放到这儿啊,这个文件是存在的吧?啊,那么这为什么会报错,各位告诉我。这返回一个,你有一个对象叫file stream吧,File input stream是不是is啊好,那这块报错的原因是什么?是因为你调这个方法吧,这个方法这是不是调这个方法,这个方法这是不是有异常。而这个异常是不是变异是异常,你是不是必须得对它进行处理啊,如果不处理,变异器是不是报错呀?哎,你可以在这throw吧,是不是,哎,Throw啊throw哎,我们在这儿呢,说过Rose了就不说了啊,我们看拆开。
02:04
Try catch这怎么写呢?这样写对吧,大括号是不是,哎,Catch catch谁呀,哎,你这个异常,你这如果是none counter exception,对不起,那你这个不行。编译器还是报错。明白吧,你看编译器还是报错呀,不行啊,对吧,那么这块你应该怎么写呢?来注释掉啊。编译报错,因为你没有处理这个异常。对吧,没有处理那个file not found exception,你点过去对不对,你你这块是file not found exception,你得处理这个异常,所以这块你得改成它。你看改成它就可以了,如果出了一个异常,那现在你就输出一句话叫什么呀,叫做文件不存在呗。是不是,哎文件不存在,那后续代码,后续代码这里可以执行吧,哎,因为捕捉了吗?Hello word。
03:04
Hello word啊,我们这个文件名写错了,你看写错了啊,这个文件是不是不存在呀,来执行一下,你看文件不存在,这个就执行很顺利就结束了,然后紧接着往下是不是有hello word呀,对吧?Hello word执行是不是?哎,那你这样如果出问题了,你后续这里的程序就不能够执行了,各位啊。这里代码就。以上啊,出现异常这里无法执行,嗯,你看试一下走一个。嗯。对吧,哎,文件不存在hello。文件不存在hello word。理解了吧,哎,那么咱们接下来继续往下看啊,这个可以。注释点啊,那如果说我。
04:00
在这块。我写一个什么呢,写一个这个。IO异常行不行?好,大卡是不是也没报错。没搞错吧?Out,回车啊,引进来。这个位置是不是写IOEXE是不是也没问题啊。对吧。为什么呀?为什么呀,各位多肽吧。是不是多肽呀?IOE是等于new。Found exception,这个在Java中是允许的吧?副类型的一个引用。是不是指向了一个子类型的对象,因为这个E变量保存内存地址指向一个对象嘛,这个对象是一个子类型对象吗?所以写这个行不行啊,没问题啊。没问题,那现在我再问大家,如果说我把这个IO异常,我给它写成什么,我给它写成exception行不行?
05:07
好大看行不行啊。也是多肽吧,是不是except是老大呀,这样写是不是也没问题啊?对吧?Catch exception吗?你看没问题吧。对不对,哎也行,你看走。所以说这个catch这块的异常呢,你可以写怎么着啊,可以写当前准确类型,也可以写它的负类型。啊,Catch这块可以写副类型啊,也可以写什么呀,哎,我们确切的类型都可以啊,Catch后面可以写确切的类型,别往这写了,行吧,别往这写写到上面啊。开一句框。开后面的小括号。中的类型啊,可以是具体的异常类型,也可以是该。
06:04
异常类型的负类型啊允许啊允许的。好,那么接下来咱们再接着看啊,还是这个。那么我们这样写了,各位看好了。我们能不能在这里去写多个catch,比如catch什么呀,Not found exception。File notion,那紧接着大家看啊,is.read是不是读啊建好这个这是创建啊,创建输入流这个方法就表示读文件,好大家看读文件这个方法是不是又有问题了。你好好看看文件这个方法点过去,你看是不是有IO异常啊。对吧,所以我问大家这个地方应该怎么办。是不是接着往后开始啊,得处理吧,是不是得处理啊,I IO exception,因为你只处理这个file not found exception是不行的,因为这个方法又有异常了,你需要再接着往下处理。
07:11
啊,当然我直接写个exception行不行。那没问题,因为exce包括所有的类型吗?对不对,把所有的异常不是都处理了,所有的常是不是都走这个分支,这意思是不是就所有的异常都走这个分支啊。对吧,当然这种处理方式呢,我觉得还不太好。因为你不够精确,应该是精确的异常精确处理对吧,你比如文件找不到,那你就就就就就文件找不到呗,对吧,哎叫做file什么呀,Not found exception对吧?哎如果文件找不到,那就是文件找不到,文件找不到我们就哎输出这个。是不是,那K再往下我们写一个IO exception行不行呢?好,大家看也没问题,这样的话,这个问题是不是就解决了。所以可以写多个啊,这是第二点,各位。
08:02
可以写多个。建议catch的时候精确的一个。一个处理啊,这样有利于程序,呃,有利于程序的调试啊,有利于程序的调试,你出现这个异常,你就输出文件不存在,你出现这个异常,那你就告诉他对吧,读文件报错了是不是,那输出这个的话,就表示上边这个没问题,下边这个有问题啊,还是建议你精确的控制,这样会好一些啊。这样好一些,Catch是可以写多个的。好对吧,文件不存在,因为出现这个问题之后,这就不执行了,进到这个里边执行了啊,你开始可以写多个,那么再往下呢,我们继续看啊,Try catch还有什么语法。那try catch这一块我能这么干吗?Catch语句块大的类型写到上面,小的类型catch写到下边行不行?大家看是不是报错了。
09:04
他K可以写多个自上而下的顺序,必须从小到大吧,你这样如果catch一个IO异常的话,大家想想这边是不是就不行了。对吧,就不行了,你鼠标停到这儿,他说exception是吧,Has already has already been catch catch什么意思啊,表示说这个final found exception已经在上面捕捉过了,你为什么在这再捕捉一次?对不对,哎,这个肯定是执行不到的,原因是啥?因为你上面出了这个。异常之后,它那个出了这个find到的fund exception之后,它自动啊从上往下开始匹配,对吧?哎,那这个IO异常它是包括这个方向的fund exception的,所以这个呢,就永远执行不到,没有永远执行不到,你写上它,它编译器就报错,所以这块呢,编译报错,各位啊编译报错,因为你在上面已经捕捉过了这个异常了,你在下面又捕捉一次,那肯定是不允许的呀。不允许的啊,这个呢,你还得注意一下。行,这边有个要求,什么要求,我再写上K,写多个的时候啊,从上到下。
10:10
从上到下必须遵守什么呀,从小到大。从小到大啊,就从上到下,必须遵循从小到大。啊,Catch后面小括号类型可以是具体的,也可以是该类型的副类型,Catch可以写多个建议catch是精确一个一个处理啊,这样有利于程序的调试。另外开始写多个的时候,必须从上到下,从小到大的原则啊,从上到下从小到大的原则。啊,从小到大。
我来说两句