00:00
呃,下一个问题咱们这个游标就搞定了啊,下一个问题就是把这个异常呢搞一搞。数据库中的异常。那咱们首先回顾一下什么是异常?啥是异常?错误是叫异常吗?错误和异常是完全两个概念啊,是这样的啊,我给大家告诉这正正这个这个重新捋一下啊。什么是异常?记住了什么是异常。异常,就是说这个假设是生活或者说程序中一样的。就是百分之九十九一点毛病没有。就有一种特殊情况下,哎,他就给你报错,这就叫异常。OK。这叫异常,就比如说咱们从宿舍到咱们教室这段路。咱们正常走,走着走着走着一点没问题,就给你十分钟,100%能走到吧。哎,假假设就十分钟啊,每天都是十分钟,每天都是十分钟,以此类推。但是突然有一天。
01:01
天上掉下板砖,给你砸那儿了。你是不是走不到教室了?这个过程就叫发生了异常,OK,明白啥意思了吗?对吧,哎,就比如说咱们开车回老家。正常情况下八个小时能开到。对吧,一马平川也没啥问题,顶多堵堵车慢一点,但是突然有一天。这个世界末日了,公路断了,你还能过去了吗?过不去了是吧,哎,这这种什么是异常呢?就是99%没问题,就有那种特殊情况会导致程序报错,生活中断。这叫异常,OK?所以一定要把错误跟错误搞搞这个区分开啊,啥叫错误啊。错误就是100%逃不开,必须报错,人家叫错误。对不对,哎,错误就是100%报错,而异常呢,是99%都正常。没问题吧,嗯。
02:00
好,那第二句话发生异常后,语句将停止执行,控制权限直接转移给谁呀,异常处理部分。异常处理部分简单的给大家回顾一下哈。踹开我简单写了好吧,TRY开有1233句代码,然后开直接就到这儿了,好吧,这个是X。能想象到这个代码吧?好,当程序第一段执行,OK。假设就输出一句嘛,OK,第二句做错了,那么程序。会不会执行三?这一百万一定一定要记住啊,只要这句话报错了,那么权限就是控制权限,直接从此句直接交给异常处理部分,直接碰到开里。所以三根本不会执行。OK吧,好,这是咱们之前学过的内容啊,只是帮大家回顾一下。
03:00
刚才我说的这个过程在数据库里边呢,是通用的啊,它也是这样的一个原理,只要停止就只要报错就行。好了,那咱们来看看在数据库里边的异常处理代码结构怎么做的呢?是这么做的。这么做的,直接来个exception是吧?哎,然后呢,当。报什么错的时候干什么事,报什么错的时候干什么事儿。咱们在写加号的时候踹。哒哒哒一堆代码是吧?K是不是可以写多个呀?记得开始可以写多个吧,哎,是这个意思啊。好,这个里边呢也是这样,Catch可以写多个,这个当when,它就是catch的意思,当报这个错的时候,咱们这么处理。当这个错的时候,咱们这么处理。OK,比如说咱上饭店吃饭,当面中出现了苍蝇,则陪你一晚。
04:02
则吃出,吃出一个老鼠来,则赔你8万。转了肉是吧,哎。当吃到食物中毒,直接赔你条命。哎,是不是这个意思啊,当什么样的错误,咱们就要相应的怎么去处理。没问题吧?好嘞,来,咱们简单就别看这个了啊,把握这一堆也记不住,咱直接动手写一个好吧。动手写一个啊。啊,异常是吧。代码这边copy过去没?啊,Copy过来了,那咱们这个就代码就删了。从来。第克尔。可利尔里店安的。啊,这里边儿呢,咱们也就不声明了吧,啊,声明一个,让大家看看这个错误哈。好,我声明一个last name。
05:01
来自于员工表中的什么列啊,Last。Name列后边是什么?菜吧,还是肉菜吧。OK。这就是我声明了一个L变l name,然后它呢,和last name保持一致是吧?好的,来看我的。我要查询。Last name来自于员工表。条件是员工编号等于20。那么把查询出的这个名into。Into给上边的l name好,这个程序能看明白吗?没问题吧,好来,我就简单的输出一下,那我就看一看L内叫啥呗。啊,这个输出语句copy一下啊。哎,姓名就是他。呃,这个姓名是不是就是L内嘛,好嘞,来执行。
06:07
没毛病是吧?没毛病。这个中文英文看不太明白啊。讨厌的人啊。First,来吧。啊,这个没来F呢。好,查德,没问题吧?啊,就这么一个简单的程序哈,啊,正常查呢没问题,二号员工也没问题,12号员工也没问题。但是突然有一天,我就来个120。120。行,你你会觉得会怎样?有一员工啊,没有,但所以给你报错。不错了吧,他说啥未找到任何数据是吧。未找到任何数据,他告诉你已经很明白了。但是作为一个用户的话,你给他弹框报错,肯定他是不接受的。
07:04
他肯你肯定要怎么去处理呢,说程序有错误,请稍后再试对吧。车开着不就干这事了吗?你这个报的硬硬性的错误,绝对不要给呈现给用户,好吧,你应该给用户一个。这个比较婉转的一个回复是吧。哎,玩游戏的时候,不管程序报的什么错,他只定告诉你,请稍后再试,请稍后再试是吧。咱们也这样,咱们也这样呗。是不是得在这个程序上加入TRY语句了?看好啊,咱们对这个程序加check。这么讲。当程序报错的时候,加入咱们的,加入咱们的exception ex。好当。匹配到错误,这个错误类型我也不知道。之前咱们是什么空指针异常,数组越界异常啊,你先甭管啊,一会儿我告诉你是什么,咱们匹配一下其他的,就是说所有的异常都这么抓。
08:05
Others。然后则。则这块输出一句话。比较友好的提示是吧,怎么说呀。你是不是傻?OK。只要你看我这个程序写的哈,只要你报错了,我就给你匹配出来,并且告诉你你是不是傻啊,好来试试啊,一执行。OK。对吧,然后呢,如果改正确了。数学麦克了。对吧,如果出现错误了。是不是就给你这样的提示啊。好,这就叫异常处理,异常处理。
09:00
OK,那这块我刚才说过了,这个others表示匹配很多个啊,匹配很多个。啊,匹配很多个,这个别致,你是不是傻了,就是可以搞个。啥呢?搞个专业点的哈,准确点的。查无此人是吧,哎。查无此人这个专业啊。哎,咱明白客户也明白是吧,一执行啊听一下。311查无此人。对吧。那现在呢,对这个程序我再次升级好了,你正常来说的话呀,正常查询出呃一号用户。没毛病是吧,好了,那我程序呢,不仅这么一点代码啊,我接着往下写啊,我接着往下写的话,我再写一个什么样的错误呢?呃,我再写个别别的错误啊。嗯。简单点儿的。简单点还不简单吗?最简单的错误是啥错呢?
10:02
我给大家写一下。行吗?啥意思?底下的这玩意儿分母能当零吗?不行吧。来看着啊,我现在正常查一呢是吗。正常来说能不能打这个名。能吧。卡门是吧,时行。我错了。刚说过,这样弹框的形式是不是绝对不能出现啊?哎,结果他是这样的。是这样的。所以差点没走过来呢。无效字符,等会啊。是不是这个错吗?我的。没问题是吧。就是他。回不来了,站过来吧。就是这句话报错吧?那咱们你看上面是查无此人,那这个错误的话,如果出现了,你是不是还得匹配另一种异常啊。
11:06
他这阿斯啊,是没法抓这么多,没有办法抓这么多。所以咱们应该怎么做呢?怎么做呢,这么去做啊,看一看吧。首先刚才咱们说查无此人,那个错是什么错啊?是什么类型,哎,未返回行嘛,但是没查没查出数据对吧,你看他这个单单词写的是不是也很直白。叫没有数据发现。没有数据发现,OK,所以的话呢,我就把这个单词,这个单词放在这个位置。OK。这就是如果匹配到这个错,就是查无此人,我先把这句话呀,先注释了执行。那这是有这个哈。没问题吧,是不匹配进来了,好,然后再看除数除零的这个是哪个。这太直白了吧,这个。
12:01
是把这个搞过来啊。来再匹配一个。当。当这个这个类型。则。别的了,处处不在零啊。好,打开。先正常的一。OK,你看正常的话找到卡门了,正常执行是不是没问题,然后当这句话的时候报错了,然后整个程序首先蹦到这,哎,是不是这个类型错一看不是,则程序往下边找,是不是这个错误,则满足输出。看清这个结构了吧?哎,这个就是异常处理机制。然后这个是匹配类型一,匹配类型二,那么如果还有一种比较恶心别的一种类型,咱们怎么办呢?还有叫做other,有或者说叫default。
13:12
Default,你想象咱们开始拆开那个那个Switch语句。是不是K1K2,他最后来一个什么呀,是不是来个default呀,就是说。不匹配一也不匹配二,就匹配其他的呗,咱们也是不匹配他,不匹配他就匹配他呗。所以这回知道我之前一直用的阿德斯是啥意思了吧?哎,就是其他类型哈,走。这回实在是不知道咋弄了,给你来个输出吧。行。联系管理员啊。是不是都这么干的?哎,请联系管理员,或者说稍后再试是吗?好了,这样的话,咱们的这段代码的整个的加上了异常处理机制,算是比较完整了。
14:07
哎,算是比较完整的,不管你报什么错,都有相应的处理结果。好吧。哎,这个就是咱们的异常处理机制。
我来说两句