00:00
那么关于整个异常处理这一章呢,咱们就讲完了,这儿呢,总结一下啊,总结一下这一章呢,我们就讲了这样的几个事情啊,咱们讲的过程当中,经常去回顾过来,就讲了这样的几个事情,那这几个事情里边,我们说最重要的呢,还是异常的处理啊,那顺便呢,后边还有一个叫手动抛异常这个事儿啊,这是最重要的这个点,然后这一张呢,其实主要呢,我们说就五个关键字就可以把它涵盖起来,这是三个,这是一个,这是一个五个关键字,好我们直接来看一下,最后这个图说异常处理呢,这块我们五个关键字基本上就能把这个差不多所有的内容呢,都给它涵盖起来了,那首先呢,关于异常的处理,我们说有两种方法,Try catch finally。啊,也可以呢,用。啊,这个呢是在你方法声明的这个位置啊叫Rose,这呢是在我们这个方法体里面啊,进行一个try catch finally啊它呢是可能出现异常的代码,这是你处理的方式,这个呢,实际上一定会执行的代码。
01:03
诶,这个意思好,在这里边的话呢,还有另外一个关键词叫做throw,那比较典型的一个面试题就是throw和throws有什么区别。哎,肉和Rose有什么区别?试的,我找一个同学来说一说,看看能不能说清楚,这个呢,你也不用非得要看他了,你用自己的语言去说,嗯,朱森,你说说,一个是抛出一场,一个是声明一场。就是说的这样是吧,嗯,你再再多说两句。嗯,你想想咱们那个,你看我刚才写的这个代码这块我既用肉了,也用肉了,一个是方法的声明处,一个是方法体内。
02:14
啊,这是它位置是这样的,但是你不能把这当成一个主要的点是补货,是补货啊是异常处理的一种方式,嗯,这个呢。手动抛出,手动抛出一个异常对象啊,你自己能能分清楚吧,但说的都都是没问题的啊,自己能够区分出他俩用的时候不用错能达到不啊,还是多看看,嗯,那那个后边的小旭能说小旭能说说吗。
03:03
肉呢是生成一个异常对象,嗯,死肉是抛出异常,这个呢,再再多说两句,抛出异常什么意思啊,抛给上级啊,或者再明确一下,就是这个Rose呢,是咱们说的异常处理的一种方式,对吧?嗯,这个呢是生成一个异常对象的一个一个情况啊,后边其他同学是不是也有迷糊了呀?啊,有迷糊的这个你看的话呢,你看这个,你看我这里边写的很清楚,咱们说呢叫抓包模型,有两个过程,第一个呢是抛,第二个过程呢才是抓,是要处理抛的,里边呢有两种情况,一种呢叫自动生成,一种呢叫手动生成,那这两种里边呢,手动生成这个呢,用的叫肉,是用来生成一个异常对象的,你有了异常对象了,下边是不是才考虑叫抓啊对,然后抓的时候呢,我们有一种处理方案叫做throws,它其实是一个事物的两个环节,第一个环节呢是抛,第二环节叫抓,是不是这种并列结构的,他们两个你要说的话,可以是这种配合结构啊,第一个结构出来以后呢,第二结构呢,紧跟着跟上配,配合一下,所以我们也会看到,在这个程序里边呢,它俩呢可能会同时出现,哎,就是你这个呢,是第一个过程,你生成对象的异常对象的过程,我这呢是处理的事儿,我这呢写了一个例子,好比呢叫上游排污,下游置污。
04:37
是一个递进的事儿,上游排污污呢,就相当于是异常是我们肉排出来的这个污水,然后呢,下游置污呢,就是我处理这个异常,那就是肉我采用处理了,那当然这种处理方案呢,就是它直接往上爆了是吧,那它没有真正把这个水给变成清清澈的了啊,那当然呢,也算是一种这个处理方式。这一个呢,是这个制造污水的,一个是治理污水的,你可以这样去理解啊,两个环节啊,别整错了,行,呃,这个完了以后,后边呢,你看我这服了一首小雾是吧,这是我们整个算是Java s SE这个基础阶段,讲完以后啊,这个涉及到的有几个内容,最遥远的距离是呃,我在al if里,你在al里,然后这两个永远分离是吧,不可能同时执行啊,最痴心的等待呢,就是kiss啊,我是kiss,你是Switch,等着呢被执行啊,但有可能永远选不上是吧啊然后最真心的相依呢,就是呃,你是TRY,我在开始,不论你发什么脾气,我都默默承受,然后呢,迎接共同的finally啊,Finally不是finally是吧?啊,Finally啊,行,这个呢,哎,程序员或者叫Java程序员,那你就应该能看得懂了啊,行,那这个结束以后呢,咱们把这个。
05:58
日常处理这块呢,这个一瑞呢就写一下,因为呢,咱们相当于整个呃,Java SE咱们分成一个叫技术阶段啊,一个高级阶段啊,还有这个技术拓展阶段啊,其实整个呢,我们主要是看这两个阶段,这个呢是整个大家学完以后啊,至于说你工作以后啊,再关注的这样的几个方面,哎这几个方面啊,然后呢,这个咱们现在把这个基础阶段呢就结了,基术阶段的话呢,就以异常处理的结束呢,而结束把这个异常处理的这个1DIARY呢,我们也给它完善一下,顺便呢,把这个今天咱们讲的内容呢,大家呢再去梳理一下,好,首先提到一个叫异常的体系结构,那这块呢,大家一方面你可以看一下咱们这个PPT里边呢放的一个图。
06:42
哎,这是一个图看它可以,诶或者的话呢,咱们这个在代码层面呢,这也写了一个。写了一个这样的一个结构也是可以的,这个看哪个都行,这个我把我写这个放上面啊,那这样看哪个都行,这呢叫异常的体系结构,下边说程,从程序这个执行的过程,我们来看一下,这叫编译式异常和运行式异常,从程序执行的过程来看,这是我们PPT里边有这个事。
07:13
那有这样一个事儿,把这个呢拿过来,那我们程序的执行分成一个叫编译式过程和运行式过程,然后我们就相当于在这写一下,什么叫编译式异常呢。诶编译,诶编译时异常就是执行咱们叫Java c.exe这个命令时,说可能出现的异常,注意这叫可能出现的异常,就是你一编译呢,它就不过了,但并不说这个异常一定会出现啊,说file放except他确实给你报出来了,但这时候文件在不在,其实他也不知道,只是说呢,可能会出现了问题,就让你提前呢,就得考虑到怎么去处理啊,你不处理他就把这个问题呢给你报出来了,嗯,就相当于大家呢,比如说现在你要是去天安门,就天安门呢,你这块呢,你就想这个,哎这个打个车或者坐公交车去,倒不是说呢,你一定过去会堵车,但是呢,你现在去的过程当中,你就得提前考虑到万一堵车怎么办。
08:12
或者说万一下雨怎么办?诶提前你在去之前,出门之前,你就得先呢,得让你去拆catch或者是THROW1下去处理啊,倒不是说呢,你拆开始了,就是因为它一定会出现,不一定啊,就提前提前准备好,那我这块呢,就是在你编译的时候呢,我就先让你出现这样错误,就是说你得考虑这个事儿啊,但不是说呢,真的会出现,那么运行时异常,那运行时异常就是我们再去执行java.exe这个命令时,诶可能出现的异常。嗯,这个呢,其实你要可能其实倒不是特别准确了,那就是说真正到运行这个环节了,你要出现异常了,那就是真出了啊,那就真出了啊,那这个就别加可能了,就执行这个命令的时候呢,出现异常叫运行时异常啊,那编译呢,就是有可能人家就有这个文件不会出现file not found了,但是呢,还没到运行的时候呢,我也不知道,反正提前呢在编译你就得你就得给我处理,不处理呢,我就让你出现这样问题,真正处没处理一场运行才知道,但是呢,编译就不让你过这意思啊。
09:22
嗯,这呢叫编译是异常和运行是异常,从我们这个程序执行的角度呢来看的,下面呢,说常见的异常类型有哪些,请举例说明,这呢就咱们对应的这里边的这个呃,代码了,这个代码的话呢,这个我们举的是有运行的,有编译的,这写了一些例子,这例子呢,大家下来呢,你可以看一看啊,就是如果呢,你涉及到这个笔试的时候呢,问到了说常见的异常都有哪些呀,这个你别这一问问懵了,说这个这个这个都说不出来了啊,吭哧吭哧半天呢,想不出来一个是吧,这个不应该,所以这个异常的话呢,也能够去举举例子,哎,行,这是咱们就写的这样的一些例子了啊,这就过了,然后下一个问题呢,就关于异常的处理,这是咱们的重点,这呢提出来这个叫抓抛模型,那首先呢,我们把这个抓抛模型呢,说分解成两个过程,第一个呢叫抛,第二呢叫抓。
10:14
啊叫抓CTRLC这样子啊,其实狭义上去理解这个抓的话呢,你可以理解为就是catch了,就是你把这个可以看成呢,就是一个try catch这样的操作,那这呢,咱们把它呢广义了一下,就把它呢理解为是异常处理的两种方式了。啊,异常处理的两种方式,一个呢叫try catch,一个叫throws。行,这个事呢,大家要清楚啊,这里边写的这个啊,并抛出有少个这个括号了,好,然后下边的话呢,我们具体的就是针对这个try catch finally和throw进行了一个说明,那异常处理的第一种方式啊,Try catch finally,嗯,那使用上的一个说明,咱们呢,这边写到下边了,首先呢是这个结构,然后下边呢,具体这些点啊,这个我就先写到这啊,CTRLC一下。
11:13
这个变小一点。嗯,不错啊,行这就可以了,哎,这老师说的这点,然后下边一个呢说,哎总结一下说如何看待代码当中我们出现的叫编译式异常和运行式异常,哎这个事儿的话呢,其实还是比较重要的一个事儿啊,咱们呢,实际上说呢,对于这种这个运行式异常呢,其实咱们就可以考虑不去处理了。那那我们编译式异常呢,是一定要处理,这是这样一个体会,那编译式异常去处理,那处理以后是什么效果呢?咱们说了,实际上你处理以后呢,只是相当于把我们这个编译时候可能出现异常呢,给它在运行时间去去去延迟到运行时间了,那运行时候呢,发现你要有那就真爆了,所以这呢是咱们两个体会啊,CTRLC。
12:13
行,嗯,这个事情。好,这呢是说的这两个体会啊,这个大家关注一下,然后下边呢,关于这个finally,我们说叫一定会被执行的代码,诶去体会一下何为一定会被执行代码,那大家呢,一旦知道说会被一定会被执行,以后呢,重点关注的就是这个三,后面呢,咱们涉及到相关的这样的一些资源,咱们都需要去给他手动的去做一些关闭,只要是关闭,这时候你就不用多想了,一定要放在finally当中。啊,就是这样一个事情好,主要呢,我们关注的就是这样一个事啊,那么后边呢,涉及到这个面试题,这个面试题的话呢,咱们以前说过啊,就这个final final final说这呢三者的区别。
13:04
这三者的话呢,也不能说叫区别了,本身就没什么共同体态啊,这个呢,你就分别把每一个呢介绍一下,尤其需要注意的就是这个finalize,它可不是一个关键字啊,它是一个方法名,对人家前面两个是关键字,诶这要注意,这呢我就不用多解释了,这个你就把每个都说清楚就完了啊,然后类似的咱们说过这个,这是一类面试题了,这就是长得比较像的,长得比较像的像,咱们现在不也说了一个叫Rose和Rose throw和throws,然后呢,咱们这个后边呢,还会讲这个叫集合,集合呢有个叫collection,还有一个呢,它的叫collections,这里区别还有什么呢?还有咱们这个后边的常类呢,专门来提一提这个字符串啊,这个string,还有这个string buffer,对,还有呢叫string builder,哎这三者之间有什么区别,还有呢,后边像集合里边呢,讲那个叫哎a RA list,它呢跟那个叫link的list,哎这也算长得比较像的,嗯,还有这个叫哈希map,对,哈希map还有个叫link的,哎,哈希map,哎这有什么区别?
14:35
这都属于长得比较像的这些结构啊,让你对比它们有什么区别,好,那这时候呢,大家关注一下这个事儿,然后另外一类呢,就是长得不太像啊,结构不不相似的,不相似的啊,结果不相似的,想想早上呢,复习了一个叫抽象类和接口有什么区别,还有对重写重载,那应该也会到这重写跟重载。
15:11
这儿还有呢,咱们说这个叫等等,和equals有什么区别,后边呢,在线程当中还会提到一个叫sleep,对,跟我们这个wait呢,有什么区别,像这些呢,长得都不太像啊,长得比较像的像这种啊,像这种长得像的有可能它真没什么太大关系,你像死肉跟死肉死是吧?嗯,不一定有啥关系,但是就因为长得比较像,嗯,然后这块呢,需要大家去区分一下啊,然后像这种的话呢,有时候可能它会有一些相似之处,比如像这个等等啊,ES啊,这个ES,咱们object当中其实呢就也是等等。嗯,抽样类和接口啊,都不能实例化,这个sleep wait,哎都能够造成这个阻塞是吧,哎等等他们会有一些相似的地方,好这个呢,咱们后边呢,遇到的时候再说啊,先有这样的一个概念,然后异常处理的第二种方式叫Rose s,那具体怎么用这呢,咱们说了一个这个一。
16:16
就是这样的呢,去做一个试用。哎,就是具体这样的去使用了,好这呢就不多说这个事情了,然后的话呢,我们说这个具体在开,呃先生呢,怎么去对比两种方式啊,对比两种方式的话呢,就是说我们TRY呢,是真正把这个异常呢给处理掉了,而这个ROS呢,其实只是往上抛出啊,没有真正的处理掉啊,这呢是他们二者的一个对比,然后我们开发中该怎么选择呢?哎,我们说开发中呢,就是这样子,这是一个经验。啊,这是一个经验的一个这个这个想法啊,好,这是我们提的这两个点,这是一个五吧。哎,这个五好在这儿呢,咱们额外的相当于多了一个事儿,就是关于这个呃,方法的这个重写时候的这个注意点啊,这个我们算是一个补充了。
17:10
诶补充就是咱们之前讲方法重启的时候呢,说的这个问题。对,就这个事儿,这个呢,咱们就相当于再回顾一下,因为现在呢,讲这个roses呢,咱们就能够把这个事儿呢说清楚了啊补充了一下,好,这是额外的一个事儿了,然后呢,这个呢就处理完了,这是咱们的重点,然后下一个说我们呢,还可以去手动抛出一个异常对象。啊,具体的这个使用使用说明,使用说明咱们其实相当于是写到这块了,啊,写到这块了,相当于就是什么意思呢?我在这直接写一下,就是在程序执行中。在执行中,执行中啊说除了呢这个自动。这个抛出异常对象的情况之外。
18:00
的情况之外,哎,我们呢,还可以啊,手动的抛出一个异常对象。哎,手动的这个抛出呢,其实这个词呢,是肉,死肉,有时候都混着都叫抛出了,其实这块呢,准确的说应该叫死肉了啊,我们还可以手动的叫肉一个异常类的对象,这个我们就称作呢叫手动抛出保存一下行,那具体这个面试题的话呢,就是刚才说的这个肉和诶肉的这个区别。哎,这个区别简单来说,这个肉呢,它呢表示叫抛出一个异常类的对象,这呢是生成异常对象的过程,哎,生成异常对象的过程,这个呢是生明在这个方法体内啊这个而这个叫Rose,它呢表示或者叫它呢属于异常处理的一种方式啊,然后呢是声明在这个方法的声明处,诶这是他俩最简洁的一个描述了,行,然后下边呢,典型的这个例题,手动抛出的事儿,这个咱们其实举了两个例子,一个是咱们说这个学生的这个事儿,咱们在这个学生类里边,这呢相当于咱们就是手动的去抛的啊,诶把这个呢,我们这样CTRLC这样粘过来,诶这个呢留着也也行啊,在这里边呢,咱们。
19:38
这些操作这个就不要了啊,这呢都属于要手动的去抛出异常类的对象错误的,这个我也就不要了,哎,这三个都算。那这是一个例子,然后另外呢,就是咱们昨天说的那个,就是比较这个啊圆的这个事儿啊,圆的这里边哎这里边这也算这是两个例子啊,这个我就不粘了啊,以以它为例理解一下就可以了,然后呢,我们提到说叫自定义场类啊,如何自定义场类三步。
20:08
那记住这三步,然后呢,把这个代码呢,我们也作为一个例子粘过来。哎,这样就可以了,重心还是在异常的处理,行,这是整个咱们的一个总结复习啊。
我来说两句