00:00
好,那接着再往下说,那么如果我们这个程序当中出现这个exception,出现这个错误了,这个错误的话呢,其实也是泛泛的一个概念啊,就不正常呢,这个都可以叫做一种错误了,那么解决方案的话呢,提到了这样两种,第一种就是说当你遇到这个错误的时候呢,这种程序呢,就别运行了,就终止,其实这种呢,都谈不上说是解决方案了。就是就相当于你不作为,是不是也是一种作为啊,就跟说这个有个男生,你现在有两个女生疯狂的追你啊,这个呢是非常火辣的,这种激情澎湃的是吧,那个呢,就非常温婉的,两个风格都很喜欢,不知道该追哪该不知道该选哪一个,全都要啊,选定要也是一种选择是吧,就是这时候你就在这纠结啊,我到底选这个呀,还是选这个呀,你要是选了左边了,这算一种解决方案,选了右边呢,也是一种解决方案,你要是在这个过程当中,你始终不知道怎么选选择,就一直这样纠结下去,实际上也是一种选择,就是也是一条路是吧?啊,那就相当于这个一样,就是你这时候出现错误了,你啥也不做,程序终止了,这其实也是一种解决方案,就是啥也不做嘛,这个意思啊。
01:14
一般呢,你要是这种纠结的话呢,有可能这两个人就最后就都跑了是吧,所以这个最好还是要选择一个啊,除非呢,你有超强的这种魅力,然后呢,你保证这两个同时都在是吧?嗯,有难度啊,这呢是其中的一种处理方案,那另外一种呢,就是由程序员呢,去编写程序的时候呢,一开始你就考虑到说这个错误的检测,错误消息的一个提示,以及错误的一个处理,嗯,再换一个情况呢,就比如说大家生病了,这个错误呢,就好比你生病了,正常的情况下呢,你活蹦乱跳的,这个都属于程序运行是正常的,突然生病了,第一种情况呢,就直接趴倒了,说后续的这个活动啊,工作啊,学习啊,我都做不了了,这个直接就卧倒,就是终止了,然后另一种方案呢,就是在你这个,呃,这个生病之前,你就考虑到,比如你这时候要出差了,或者去旅游了,你就考虑到说万一我要生病了怎么办呢?诶我可能会生这样的病,这样的病,这样的病是吧,提前呢,是不是就拿。
02:14
拿一些药过去啊,就拿着药就去,相当于提前的话呢,你就准备好这个异常的一些处理了,当你真正出去旅游的时候呢,诶没生病没生病那个那就更好是吧,程序那就正常吃行了,那万一要是生病了,万一生病呢,是不是都准备好药了,就该吃药就吃药,这就相当于你把这个异常呢给处理掉了。哎,就这个情况,那也就意味着就是咱们像刚才说的这些问题,比如说网络连接中断,这个也不是说呢,咱们这个异常,这个你写好这个代码以后,它就一定会出现,不是说一定会出现,就是正常来讲呢,它不会出现,就跟你说旅游一样,他也不会生病,但是他万一呢,要是中断了,万一呢,你要生病了怎么办呢?啊,你就得有一个处理的一个方案,所以提前呢,你就准备好说万一要出现的话呢,我得处理一下啊再举个例子,就好比是咱们让这个用户呢,去输入一个这个信息一样,比如说咱们就让他输入是整形,说你输入你的年龄。
03:09
啊,那就不能这么大了,哎,我写了个23,这个呢,都是正常情况没事儿,但用户呢,非不按你的来,他就写个ABC,一写ABC1点击,哗一堆乱码,这就说明你没有处理这个异常,就是你你突然就报了一个这个叫input啊misma exception,这用户一看到他就疯了,这一堆乱七八糟,这是什么东西是吧?哎,他看不懂,那应该怎么办呢?就是呢,你在一开始写这个程序的时候呢,你这块你就考虑一下这个,万一用户可能会写个ABC非这种整数怎么办呢?你把这个异常呢,你处理一下,到时候呢,你给大家来一个友好的提示,还写ABC一点按钮得蹦出个框来,说亲写的类型不一致哦是吧?哎,这个体验不就好很多嘛,你在这放一个小女生啥的是吧,他就巴不得老师写的这个异常的都看一看是吧,哎,就是你一开始的时候,你就考虑到用户可能不按你的套路来了,就是提前呢,就把这个方案准备好,提前准备这种处理的方案,就是咱们说的异常处理。
04:08
哎,就这个意思,先从这个整体上呢,大家情感上去认识一下这个事儿啊,那么下边又提到另外一个问题。对,又一个问题说呢,呃,我们去处理异常了,这个把处理的话呢,这块我们这个涉及到一个补货啊,这个补货呢,咱们后边会去说,就就因为你出现异常的话呢,这个异常咱们Java是面向对象呢,这个异常呢,它也是个对象,我得把这个对象呢给它捕获住,就相当于你在处理它,哎暂时呢,你可以先理解为是处理这个异常,那处理异常最理想的时间呢,是在编译期,就是你在编译之前呢,这时候呢,你就就是写代码的时候,我们得先编译嘛,编译之前你就先写好,但是呢,又说了一个问题,说当然有些错误啊,运行的时候才会发生,编译时候你都不知道。就比如说咱们说这个控制人异常啊,这个角标越界也也可以,或者控制人异常,这个编译的时候呢,这个根本就没有报错,然后我一运行发现,哎呀,出来一个控制人,出来一个脚背越界。
05:06
这就意味着就是这个异常啊,我们要再去说的话呢,它又得分成两类,一类呢就是在编译的时候呢就会出现的,一类呢是只有运行的时候才会出现的,所以呢,我们再往下分就出来了另外的一个这个结构了,这块呢就看着稍微复杂一些了,刚才呢,咱们提到了一个概念叫做error。那error跟exception只是两类,那我们其实呢,刚才也演示了啊,其实呢,你会发现在这个API当中有一个类呢,就叫做error,有一个类呢就叫做exception,这就涉及到我们具体的这个在异常处理这一块的相关的体系结构了,有两个类,那么这两个类的话呢,还有最上面的一个副类,这个副类呢叫做able throwable作为这错误的这个不是叫这个泛泛我们讲的一个异常的一个顶级的副类了,在异常这一块顶级的副类呢,就是throw。它的两个子类,一个叫error,一个叫exception error呢咱们说了,咱们不去进行处理了,主要看exception,这个exception呢,我们说又由于咱们程序在执行的过程当中分成两个过程,先编译的过程,在运行的过程,在编译的时候呢,如果出现问题了,我们就把它叫做编译时异常,那你编译时候没报错,我执行java.exe命令的时候呢,才出现的问题,我们称作呢叫运行时异常。
06:29
编译是异常,运行式异常,那么在我们这块呢,我往下再分,这里边这个红色的就是编译式异常,你可以定为就是更严重一些,就是编译的时候就错误了,然后这个蓝色的呢,我们叫runtime exception,就是运行时的异常。哎,就叫runtime exception,就这样一些,嗯,那么有的时候大家看这个书上或者是网上,你看帖子的时候,会它还有另外的这名字就是这个红色的话呢,我们叫编译式异常,也叫做叫受检异常,叫checked exception,然后蓝色呢叫非受检异常。
07:07
受检就理解成受检查了,就是好比是你过这个高速路收尾口一样,这个编异的,这异常呢,它直接呢,一开始就给你卡这了,说编译的时候呢,就比较严重了,这时候你得考虑一下了,呃,然后呢,对于这种这个这个蓝色的呢,叫非受检,就直接高楼路口就不用过了,直接的就不用检了,直接就过去了,就编译时候相当于没有被检查,非收检的啊,你可以这样的去理解一下这个事行,那讲到这个目前为止呢,咱们相当于就把整个这个异常的体系结构,包括呢,具体这两个error exception以及呢,Exception下边的这两个右分支就谈清楚了,这呢咱们在这块去描述一下,这呢,就咱们第一个大家需要关心的知识,就是异常的一个体系结构。这是第一个啊,大家呢,需要关心的点。就是我们异常的这样讲,后续呢,咱们去学这个集合呀,IO流啊,其实呢,大家就会发现,无外乎就是使用我们面向对象的这套思想,说呢Java呢,想解决具体的问题了,他给你提供了一些API啊,API呢可能不止一个,那可能好多好多的话呢,他们有一个继承的关系,或者一种实现的关系,哎,我们就去学习这些类或者是接口,以及他们当中的方法,其实就可以了,说的简单一点,其实就是这样,那么关于异常这块的话呢,我们整个看到一个顶级的一个类throwable throwable,就它它呢也是比较常用的,在我们这个浪包下就是它它呢有两个具体的此类error和exception,先把这个呢描描绘出来,张二点,哎,这个先叫异常的。
08:51
体系结构,诶比较顶级的Java点浪包下的throw,这是它首先我们指出在它下边呢,有两个子类,第一个呢是张二点浪下的一个叫error error,然后error呢,我们点开看一下,这块呢,是关于这个error的具体的一些解释了,说一个errorrrow呢,它作为这个rope的一个此类了,说它呢,表明呃各种各样的问题,呃是一个,呃各种合理的应用程序呢,它出现的这种问题啊,这是问题,这是一个定语从句了,说这个应用程序呢,它不需要去,呃,Catch to,呃,Try to catch这个呢就是补货的意思,你可以暂时理解为异常的处理,这呢写的非常明序,就说呢,我们这个error的话呢,它是一个合理的应用程序,出现了一个问题,但这个问题呢,不需要被处理,咱们本身呢,不是说这种问题咱们也不处理嘛,哎,就这个意思啊,Error呢,我们刚才也写了,是我们Java虚拟机无法。
09:51
体积的严重问题,这让咱们一般呢,不编写针对性的代码呢进行处理,所以这个呢,就不在咱们今天讲解的范围内了,那你怎么知道我出现一个错误信息,这是我一看是红色的了,就想去处理了,就想去这个我们用后边的拆开或者finally了,那能不能用呢?你就看一下后边这个后缀,后缀呢,凡是是error的,那都是一个错误,就叫error了,你会看到我们这里边error的具体的这些s class此类后缀呢,基本上都是error,这个不是,所以我说基本上都是啊,哎,你就通过这个后缀呢去进行判断就行,好,这个呢是叫error,那除了error之外呢,还有另外的一套,这个就是我们Java点浪下的exception。
10:40
Exception这个呢,咱们习惯上把它呢,其实称作叫异常,这个呢有时候就叫错误了,这个exception这是咱们可以进行处理的。可以进行异常的处理,就是需要呢去编写这个代码进行处理的,那么这个exception呢,咱们刚才又提到了,它又分成了两类,第一类呢,咱们叫做编译时异常,这个也叫做check的异常是吧,叫受检异常,这呢是一个它然后还呢分成一个叫运行是异常,就是编译时候呢没事,运行时候才出事的unchecked。
11:25
这个运行式异常,那么常见的编译式异常和运行式异常都有哪些呢?这个呢,我们在PPT当中呢,也能看到红色的呢,这就是呃,这块红色的,这就属于叫编译式了,这个呢叫运行时简单的,我们在这呢也写几个,比如说咱们一会也会举例啊,编译时异常常见的比如叫IO的exception,还有像这个叫class,哎,Not found的exception。这呢,比较典型的两个,像这个下边呢,还有一个它的一个词类,这就是整个异常的一个体系结构啊,是一种继承关系,叫file not found的exception,后边呢,大家看到了话,你知道这些呢,都是属于叫编译式异常了,那么运行时异常呢,咱们其实也见过一些了,想想见过哪些同指镇pointer的,还有咱们见过的一些,还有什么a ray index是吧,Out of bounce的exception,还有吗?对,Class cost exception,还有,对,还有这个叫number format的exception。
12:53
没写一个,你得想想当时在哪出现过,还有刚才还提了一个叫input Miss match exception,就是我们使用scanner的时候需要一个整形,你整个AC就是这样吗?对啊,还有很多哈,然后这块的话呢,哎,再提一个这个常爱说的这个事叫算术异常了,Arithatic exception,哎,这呢,就是一些常见的运行式异常,说你要是想写完这个事呢,其实不太靠谱了,那你这时候呢,就可以看下这个API里边往回走,说我看那个S哪些呢,一打开,哇,是不是好多呀,好多呢,这么多里边咱们说分成两类了,一类呢,是不是叫编译式异常,一类叫运行时啊,那么哪些是编译,哪些是运行呢?找一个东西叫做run time exception这这个我点一下回来它能。
13:54
变色不啊,不能就是这个这个呢,就是咱们说的叫运行时异常。
14:00
那就是说这些异常分成两类,一类呢是他自己,一类呢是非塔,那就是说世界上其实有两类人,一类呢是你自己,另一类呢就非你是吧?啊也可以啊,那这个呢叫运行式异常,除了它之外呢,剩下的都叫变异式异常,那那这个运行式异常你再一点开哇,就一对。咱们刚才写的像算术异常,它就要算数异常,这个我这好像这个这个E是吧,嗯,Arithme exception这个呢是叫算数异常,然后呢,找找咱们其他的提到了一个叫class class exception在这呢,还有呢控指针异常,让pointer exception在这这个角标越界,角背越界呢叫auTo Bouns indexth auTo Bouns在这呢,它没有直接暴露出来,这个点开以后呢,它有一个词类叫做a inex auTo Bouns,那这里边就很细了,所以说呢,大家没有必要把这些异常呢都记住说,而且呢,说每一个我都想举个例子,这也没有必要,有些异常你这辈子也用不着遇不着,对,那就没有必要去研究这么多了,那但是呢,你又不能说一个也不懂,因为你毕竟开发中呢,还会经常出现一些异常,出现的时候呢,你得知道是什么问题造成的,因为这个时候你才能知道怎去。
15:22
排这个错误,所以说呢,这块呢,也算是有一个面试题,这面试题呢,很多时候也都比较灵活啊,有一些呢是比较规范的,有一些比较灵活的,像这呢,就就有一道面试题,说呢,常见的异常都有哪些,有哪些举例说明,那这里边你都可以举例子,那你总不能说说我没出现过异常,那不可能肯定是出现过的,那你出现过哪些啊,还是得能说一说的,就是你肯定第一反应想到呢,一定是你常出现的这些,像这些呢,按说呢,不不用你提前去准备,就是你写代码的时候,自然会出现你出现哪个,你第一反应肯定就想到是那个啊就这个情况啊行,那这里边的话呢,咱们随后呢,会举举例子,把这里边的常见的异常,呃,这个具体的是什么情况下出现呢?给大家呢举例说明一下,那自然的这个问题呢,就也回答了行,那第一个事呢,就大家把这个体系结构啊熟悉一下。
我来说两句