00:00
好,嗯,在这呢,我去再演示一下这两个方法的一个使用啊,来看具体怎么用。运行时异常,那么类要写吧,不不不不用。不用啊,运行是异常不用管。不需要处理。来,我们新建一个class,这个class我们叫exception。一个自定义的一个S3已经写好了吧。自定义的什么?三写好的。来,接着看啊,Exception test09。还是异常的两个方法啊,异常对象的两个方法,一个叫做get message。还有一个方法叫print stack trains。来,我们在这PSVM加上去。
01:00
呃,这块呢,我去调一下M1方法,各位,那么M1方法要是没有的话,我能给他生成一下M1呢,去调M2方法。啊,M2方法没有的话,我再生成一下M2方法,去调M3方法。那么M3方法没有的话,我再生成一下好了,那么接下来我们在M3这块大家注意看啊注意看,嗯,看什么呢?嗯。比如说啊,比如说我们在这里在new一个什么呀,File什么呀,Input stream调一下散啊,那这边呢,这个文件的路径就随便写一个也行啊。文件的路径找一个也行,C盘对吧,然后。嗯。把这个拿过来,这是个家包是不是,哎,行了,那么这块的话,咱们要对这个进行处理吧。你看你不处理不行啊,编译器报错了。是不是编译器都出了大红线了,编译器报错了,你得处理一下,因为这个地方有异常要发生。
02:01
有异常方程耳,这个异常是一个编译式异常,所以在这你得要么TRY开始,要么throw嘛,是不是好,那out加回车,加回车之后你选一个选一个啊,选一个拆开,假如说你throw吧,扔出去是不是,那这是不是是不是就还得啊。对吧,哎,这儿这边是不是还得roses啊,对吧?哎,你这这边咱们能不能进行一个拆开始啊,可以吧,哎,拆开始啊,然后大家看默认掉的就是异常对应的什么方法。是prints,这个是不是就是打印异常,对对战信息,当你这个位置出问题之后,我捕捉住异常,捕捉住异常之后,接下来哎怎么做呀,各位是不是在这打印异常堆栈追踪信息。对吧,哎,在实际的开发中,在实际的开发中建议使用这个啊,建议使用这个。建行这个啊,养成好习惯。
03:01
养成好习惯啊,什么意思?来我们运行一下,大家知道了,运行现在应该是没有任何问题的,因为那个文件的路径是对的,对吧?哎,程序正常执行,那假如说这个文件的路径它不对错了是吧,那么这个异常是一个编译时异常,你看编译时异常也是发生在运行阶段的,你看啊来走运行编译时异常其实在运行的时候它才会发生,好大家看这个信息就是异常的,异常的追踪信息。意义上的追踪信息,各位啊,来注意听啊,这个打印出来的这个东西就是什么?就是这个E,它的print打印出来的,明白吧,这个信息就是异常它的堆栈追踪信息。啊,这个信息是这样的。你后续的代码不耽误执行,因为你TRY捕捉住这个异常,TRY开始执行结束之后,后续的代码会继续往下执行。为什么说异常会让程序更健壮,异常机制会让程序更健壮,是因为你捕捉住之后,后期的代码,它不会停。
04:01
不会停,你比如说百度的服务器吧,各位百度的服务器能随便停吗?百度的服务器能随便停吗?不能吧,他出异常之后,是不是程序应该继续能够往下走才对,对不对,所以异常是不是可以提高程序的健壮性啊。对吧,你看拆开是捕捉了呀,捕捉异常往下走了,来这里程序不耽误执行,这里程序不耽误执行,很健壮对吧?哎映射到以后,那就是服务器没有宕机对吧?服务器不会什么呀,因为遇到异常而宕机而宕机啊这个。诶诶宕机宕机这个啊,死机啊,就这意思,不不会因为遇到异常而宕机啊,而死机,因为我们这个捕捉了嘛,后续的程序是可以正常执行的,来hello word。哎呀,来好,我们执行一下啊。
05:00
但是打印这个信息有可能是在最后啊,你看hello word是吧,哎,是不是先你看异常信息吧,再往下是不是hello word呀,哎没问题啊,没问题,那么这个异常追踪信息怎么看,这是我重点要讲的,各位啊,就是我们怎么以以后怎么调错,我们以后查看异常的追踪信息。我们应该怎么看可以快速的调试程序呢?好,我要说一下各位啊,从上往下看。各位啊,从上往下看,什么意思?来,我们再执行一下。从上往下看,首先看异常信息。啊,异常信息,然后呢,看什么呢?看不是sun公司写的那个程序,记住了啊,你上边这些什么open呀,什么in呀,像这些代码你还需要看吗。
06:00
不需要,为什么,因为这是公司写的,他不会出错。错,肯定是在你自己的程序当中,所以呢,你从这个位置开始往下看。明白吧,从上往下看,你不要点这个啊,点17的话,大家看看是不是就定位到17行有问题,但是你17行有问题,其实并不是你17行出出的问题,实际上是因为你第48行出的问题,导致你44行出问题,44行出问题导致你40行出问题,40行出问题才最终导致你第17行出问题,你明白吗?问题的根源是在第48行上面,听懂了吗?你不要叭叭叭叭点来点你叭点到17上这看看看看看看半天,诶没错呀,诶这有啥错呀,这地方没错呀,那你不会看异常信息,这个异常信息应该怎么看,应该是说从上往下看,但是散公司写的这个代码你就不用看了。啊,不用看了,往下看这波异常信息的时候,看第一条,这个第一条是你自己写的,这个类自己写的方法点过去,诶这回一下就定位到了,我不知道大家有没有理解,理解的话打个一来理解的话打个一,各位啊,异常信息不能随便看啊,来扣一了一了啊,咱们理解的扣个一啊,以后查看异常追踪应该怎么看,可以快速的调试程序呢?
07:13
是不是哎,可以快速的调试程序这个东西呢,我觉得。还是很重要的啊,还是很重要的就是异常信息从上。异常。追踪信息。从上往下。一行一行看啊,从上往下一行一行看,但是需要注意的是。注意的是啊,散写的代码就不用看了啊,主要的问题是出现在自己编写的代码上啊,主要问题是出现在自己编写的代码上。啊,怎么看出是S公司写的?有什么特别的地方吗?我的天,当然有了。
08:01
当然有了各位,我问大家问题,你自己写的是不是都是com.B的呀?啊,Sun写的包名是不是Java Java IO啊,什么Java,什么以Java包名是以Java开始,你能出来吗?能不能看出来佳辉啊,能不能看出来,咱能不能看出来这个。Debug工具可以跟踪,Debug工具可以跟踪啊,但现在呢,咱们先不用管debug debug的事儿啊,就是这个程序咱们要知道啊,从上往下看,不要从下往上看。下边的异常是因为上面的错误导致的。啊,但是要注意的是散公司写代会不用看了,看报名看包名啊,就知道是自己的还是散的。主要问题是出现在自己编写的成代码上啊。嗯。
09:01
那这个描述这个异常信息,它是什么意思,我在这里写一下啊。这吧。因为31行出问题了,因为31行啊,出问题导致了什么27。27行啊。27行出问题啊,27行出问题导致什么呀,23行。啊,23行出问题导致什么呀,14行。啊,31行出问题导致二十七二十七床出问题,导致二十三二十三出问题导导致14行啊先应该先看31行啊,应该先查看什么31行的代码啊,31行代码,31行是错误的根源啊,31行是代码错误的根源啊,你要找根儿,找根儿上啊,找根儿上解决根本的问题啊行,这是异常的追踪信息,我要在这里给大家提个醒啊,怎么去看,那有同学老师,我我我在这,我假如假如说我捕捉入异常,我就不管,我就不管,我就是不管,我注释掉,我啥代码也不写好,我问你这样会有什么问题,是不是出异常你也不知道。
10:18
如果把这套代码注释掉,是不是程序,你看着表面是不是非常非常正常,你看,Hello word正常输出你看。是吧,你以为没问题是吧,实际上程序已经出问题了,所以这行代码如果不写的话,你就会发现什么呀,出异常你也不知道。明白吗?这行代码要养成好习惯,你听懂了吗?这行代码要写上。不然啊,出问题你也不知道。你以为没问题呢,你看。你以为没问题呢,你看正常执行是吧。对不对,哎,正常输出啊,当然我们这块除了e print select也可以调,这个方法是不是我们可以获取什么呀,我们可以在这里。
11:04
诶获取异常的简单描述信息能不能获取啊,1PRINT不是print get message这个方法拿到的是不是就是message啊,然后我们是不是输出啊,对吧,啊输出就行了,那你看输出嘛,是不是来走一个。你看他输出啥呀,说这个信息对不对,哎,系统找不到指定的文件,你看这样也可以。对吧,也就是两个方法,各位还是折腾来折腾,还是两个方法,异常对象它有get message方法,有一个方法,这个方法是通常在我们开发中用的比较多的,这个方法是用来打印异常追踪信息的,通过这个信息我们可以很快的发现程序哪里有问题,进行代码的一个修改,调试bug等等啊,这个只不过是一个简短的描述信息啊,简短的E对象调get message来获取message信息,行了,那到到这为止吧,咱们就把这两个方法就说明白了啊,一个叫做get message,一个叫做哎,Print sta trees啊。
12:02
最后两个都写,写一个就行了啊,一般写这个。一般写这个啊,一般都是写下边这个。一般都是使用这个啊。嗯。
我来说两句