00:01
好,关于第六章我们的对象呢?哎,我们先说到这儿,那接下来我们开始进入到我们的下一个章节,下一个章节我们还是先创建一个笔记的一个文件啊,在这我们先创建一个文件夹,我们叫做一个leson lesson07,呃,LESSON07里边我们这个文件叫做一个read me,点一个MD,还是我们这个笔记文件,那我们进入到我们这个,呃,第七章啊,第七章我们直接写了,得到一个第七章,第七章我们来说什么呢?诶说我们这个异常和我们这个文件啊,异常和文件,那异常和文件,那这里边我们包含了两个内容,一个是异常,还有一个是文件,对吧,这是废话啊。好,我们先来说第一个东西,我们先来说异常,那什么是异常呢?其实异常这个东西我们并不陌生,我们已经见过了啊,我们已经见过了,那这里边我们可以来创建一个东西,我们来演示一下什么是。
01:01
异常啊,什么异常保存一下,我们在这儿创建一个新的文件,直接来一个这个code code里边呢进去啊,我们来一个零一,我们就来说一下我们这个异常,呃,忘记写我们这扩产名了,选中我们重命名一下,这直接来个点一个这个PY,呃一长,比如说我们写这么一个啊,写这么一个直接来一个print,一个A,那这时候我没有定义A这个变量,我们这一执行,你会发现它是不是出现了一个叫做一个name error name a no find,那这个就是一个什么,这个就是一个异常啊这个就是一个异常,那这里边我们来说一下,到底什么是异常,哎,我们这个什么呢?哎,我们这个程序,诶在运行过程当中啊,在运行过程当中,诶它干嘛呢?它不可避免的会出现一些什么呢?诶出现一些错误啊,出现一些错误,比如什么呀,诶比如。
02:01
哦,使用了没有,哎初始化过的变量,哎,你这个变量没有赋值过啊,或者叫做一个没有赋值过的变量吧,哎,没有赋值过的一个变量,那这个时候他是给你报一个错啊,再比如什么呀?哎,我们这个,哎使用了这个不存在的一个索引,我们操作这个列表,这个元组序列的时候,你这个索引可能你这个索引最大就到十,结果你写了一个11是不是超过我们这个最大索引了,哎那这个时候它是不是也会也会报错啊,哎,也会报错,再比如什么呀,哎哎除零。除零什么意思啊,看着我这来一个,我直接来一个一除,哎来一个十除以二,十除以二这么一直行得五是没问题的,对吧?但是我这来一个十除以零这一保存是不是就出现这么一个错误啊,哎这么一个错误啊,除以零也不行啊,除以零也不行,所以这些情况啊等等等等,还有很多情况,这些情况是不是都会出现一些这个,诶这些错误呀,哎这些错误,那这些错误,诶这些错误在我们这个程序中,我们什么呢?诶我们称为,诶称其为叫做什么呢?异常啊,这些错误我们在程序中称其为异常,什么叫异常,异常对应的谁对应的,我们叫做一个正常,如果是正常情况下,我们程序是不是就正常执行了,诶执行第一行,执行第二行,执行第三行顺序就执行了啊,顺序执行了,那为什么叫异常,异常就是说有益于正常情况下,跟正常情况下不一样,说白了异常指就是什么哎。
03:41
就是不正常啊,就是不正常,那这个出现异常这个东西是可以理解的,因为没有没有一个什么完美的人是吧,没有一个完整的程序,你说写完了以后一点错没有,他不出现错误,那是不可能的,因为程序就是人写的,人写完了人要用,只要是人写的是人用的,那他肯定会出出什么呀,肯定会出错误啊,肯定会出错误,而我们这个异常它会有一个问题,我们这个程序运行过程中,诶过程中一旦出现异常啊,一旦出现异常将会什么呢?诶将会导致我们这个程序立即终止啊,将会导致我们这个程序立即终止,什么意思?看这了,我这写一个print,我们来一个hello,然后我这再来一个print,我来什么呢?哎,我来一个你好,这两个代码它可以正常执行对吧,那现在我在这写一个,我直接来一个print,我来什么的,十除以二,十除以二,这一保存一执行是不是都可以。
04:41
可正常运行啊,哎,都可以正常运行,但是现在我改了,改成十除以零,那我们会知道第二行代码这个时候会出现异常,那这个时候我们来看,Hello会出来,但是你好,还会不会出来了,我们这一执行走一个hello出来了,对吧,但是后边你好,有没有出来,诶没有出来,为什么?因为我们在第二行这儿出现异常了,一旦这里出现异常,它下边的所有代码都不会执行,哪怕你下边还有1亿行代码,那对不起,由于前边那行出现异常了,后边这个全都不会执行啊,全都不会执行,所以这块我们说程序运行过程中一旦出现异常,将会导致程序终止,异常以后的这个代码,哎,全部都不会执行啊,全部都不会执行,这也是我们说一个特点,你说出现一个异常,你的程序就干嘛了,你的程序就停止了,所以异常以后,无论你有什么代码,它全都不会再执行了啊,所以注意异常里边无论它往。
05:41
后无论你还有什么代码,他都不会再执行了,因为这就是什么呀,你出错了,你出错了我再执行,可能他怕什么呀,他会有一个连锁反应,你这样一出错,下边再出错,下边再出错,那可能会导致我们程序出现一个什么呀,死循环,所以它干脆干嘛呢?就直接在上边就停止了,一出错我这儿就不运行了,避免什么呀?哎,避免因为这个错误导致一连串的错误却产生,它的设计的初衷是这样的,避免产生什么呀,避免产生更多的错误,但是很明显这种方式有没有问题啊,诶很有问题,那比如说现在第二行,这我这儿是一个非常非常小的错误,这个错误这第二行其实本来就是一个可有可无代码,但是它出错了,它出错以后,会导致我们下边的所有代码都不执行,那这个问题是不是很大呀?诶叫什么叫叫叫这个一个老鼠屎坏了一锅汤,对吧?一个老鼠屎坏了一锅汤,那它可能导致我们程序整个一个程序都出问题了,那这。
06:41
这个事非常的划不来的,我们不希望我们一个完整的程序,一个完整的软件,因为一行小代码是不是导致我们这个程序不能运行啊,哎,不能运行,所以关于异常,这里边我们要说的第一个问题叫什么呢?哎,我们要说一下我们怎么来处理异常,哎处理异常。
07:01
哎,处理异常,那注意了,我们程序出现异常,我们的程序运行时出现异常,它的目的,哎并不是,并不是让什么呢?哎让我们的这个程序直接终止,直接终止,那你注意了,它出现异常的目的,他不是说这个Python这个就坏是吧?那坏干嘛呀,出现异常就不让你运行了,他不是这个意思,他是什么呢?他是希望什么呀?哎,我们的Python是希望,哎我们在出现异常时,异常时我们可以什么呀?哎我们可以什么呀?诶编写代码。哎,编写代码来对什么呢?来对这个异常进行什么呀?哎,进行处理啊,来对这个异常进行处理,所以注意出现异常让你程序停止不是他的目的,他是希望什么告诉你在这一块儿它有可能出现异常,你编写代码的时候,你需要干嘛,把这个异常的情况干嘛呀,你给它考虑进去,你通过代码来对这个异常进行什么,进行处理啊,来对这个异常异常进行处理,所以凡是有可能出现异常的地方,我们要干嘛呀,我们就要处理啊,我们就处理,那好,那接下来我们就来说怎么去处理这个异常,这个异常就像什么呀?诶如果我们把一个程序比喻城市一条路的话,我们执行程序实际上就是在沿着什么呢?就是在沿着这条路去走啊,沿着这条路去走,我们可能是沿着这条路去笔直走啊,笔直走,但是呢,有可能我这个路上边干嘛呀,它有一个坑啊,它有一个。
08:44
坑,它有一个坑,那这个时候你去笔直的走走走走走走的时候,你是不是就有可能去掉进去这个坑里啊,哎,有可能去掉进这坑里,那这个异常就相当于是这个坑,如果你真的一直走下去,你等于掉这个坑里,掉这个坑里了,后边代码你还能不能走,还能不能执行了,哎就不能执行了啊,就不能执行了,那这个时候就是我们这个异常,这个坑实际上就是一个异常,那我们在这做的是什么?哎,我们是要处理这个异常啊,要处理这个异常,那我怎么处理诶怎么处理这个异常,那我们想想这要怎么办呢?还是我们先不考虑这个异常的问题,我们还是考虑这个坑的问题,是吧,考虑坑的问题,诶假如说你就是下班回家,诶,或者从这个从这个学校回家,那这个时候呢,哎,你回家的路上就有一个坑,但是这个坑啊,可能那天下雨,这坑里边有点水啊,有点水,你现在呢。
09:37
你不知道这个坑的深浅,那可能它就是特别特别浅,直接走就走过去了,也可能是什么呢?特别特别深,你一掉下去就万丈深渊是吧,直接掉到地心那个熔岩就把你烧死了,这个坑的深浅不知道有可能深有可能浅,好那现在你就走路就走到这儿了,现在你已经到这个坑的面前了,那你怎么办,你怎么办?哎,你是毅然而决然的直接走下去呢,还是怎么办?哎,那我们说了,我们这个有这么几种方案,第一种方案像我们说的,毅然决然的向这个坑里边走下去,诶那我有两种可能,这个坑它就特别浅,我直接就走过去了,对吧?还有一种可能什么呀,这坑特别深,我就掉下去了,那我们说了这种方式是不是风险有点高啊,诶风险有点高,所以不太好啊,像我们这个是不是就直接往下走了,哎,能不能执行,能执行就执行,不能执行程序就终止,这个东西就是一个什么呀,哎,要么走要么死哎。
10:34
不好,那怎么办?那现在我知道他有危险了,他有危险了怎么办呀?哎,我还有一种方案,我绕过去,我绕过去我不从这个坑这走,那是不是就OK了,哎,我不从这个坑这走,但是这个时候也会有问题,什么问题啊,那我绕过去是不是明显远了呀?哎,明显远了,所以如果我不去执行这个代码,可能会导致我的程序执行的性能干嘛呀,哎,行的很差,你绕过去了嘛,哎,它可能执行起来就就很慢啊,执行起来很慢,影响一下性能,那我还是希望能快点。
11:06
还有什么方案,哎,还有一种方案是我们其实会尝试一种方案,什么方案?哎,这不是有一个坑吗?这个坑的深浅你不知道,不知道怎么办?哎,不知道我可以去试试啊,我去试试你这个坑的深浅,如果浅我就过去,如果深我在干嘛呀,我再去绕道怎么试啊,拿这个坑来举例子,我拿脚点点,我看能不能经得住,对吧?或者我扔一个小石子,我看看那石子能不能落下去,这是不是都是一种尝试的方法呀?哎,尝试方法,所以这代码也是这块我们的第二行代码,它是不是有可能出错,哎,有可能出错,那所以这个时候我们这个代码你就不能去直接执行,而是什么,而是我先去尝试着去执行一下,如果有错我就不执行了,如果没错,我是不是才执行啊,所以在这儿我们也要去干嘛呀,去尝试一下,但是同学说了,老师我觉得你这块没必要尝试,很明显第二行是有错,你都除以零了,很明显是有错的,那这一行代码你就别写不就完了吗?诶对,确实如此。
12:07
但是这个我们讲的是一个事例,现实开发中可不可能有这么明显的错误啊,不可能,如果在现实开发中你写这么一个明显的一个异常的代码,那这个你一定是神经病啊,你一定神经病,所以现实开发中这代码它错误都不是那么明显,就是说这套代码有可能出错,有可能什么呀,没错,那这个时候你就不能直接说这个代码我就不写了,有可能出错代码我就不写了,那对不起,你的程序就没有办法开发了,在开发的时候避免不了会可能出现什么呀错误,那这个时候我们就需要干嘛来让这个代码试着去执行一下,如果能执行我就执行,不能执行我就不执行,那我怎么来告诉解析器,这个代码有可能出现异常,你试试啊,你试试没错你就执行,有错就别执行呢,哎,那这里边我们要说一个新的语句,我们叫什么呢?诶我们叫做一个TRY语句,TRY语句TRY什么意思呀?哎,TRY是不是就尝试啊,哎尝试那这块我们来说一下它是怎么写的,我们直接来一个这个TRY后边一个什么呀,后。
13:07
后边一个冒号,冒号后边很明显这块我们要跟的是我们这个代码块啊,代码块然后串后边我们还要再跟着一个子句,叫做一个exce PT叫做一个except except什意思呢?叫做除了啊,叫做除了除了,我们先不管它什么意思吧,我们先写上except,后边也跟的是什么呢?哎,也跟的是代码块啊,也跟代码块,那这代码块它这跟的是一个什么意思呀?哎,那注意了,TRY什么意思,TRY是尝试,所以TRY后边是跟的是什么?是跟的是我们可能出现错误的什么呀,语句啊,可能出现错误的语句啊,而Excel的后边是什么呢?跟的是我们这个出现错误以后的什么呀?哎,处理方式,比如说出现错误了,你要怎么处理啊,你要怎么处理,还有一个子句,这个是可选的,我们叫做一个else else是干嘛的,Else后边也是放代码块,那这个代码块什么呢?诶这个是,诶没出错。
14:07
没出错时,哎要执行的一个语句啊,没出错时要执行语句,所以这个东西就很明显了,首先我们在出二里边放的是可能出现错误的代码,Except里边放的是什么呢?哎,是出错以后的处理方式,而这个else里边放的是什么呢?放的是没出错的时候要指行的语句,就这么一个三个东西,我们来看看效果啊,看看效果在这儿我们直接来写,那现在我们可能出现的语句是错误的语句,是不是就是它呀?哎,就是它,所以在这儿我们直接来干嘛呢?诶,我们直接来放一个什么呀,放一个踹,然后冒号,现在把它缩进,那现在我们这个print是不是就归这个踹广了,诶归归踹了,那现在我们说了没出错,没错就直接执行了,那这里边我们再来一个什么呢?再来一个except except的后边我们这放的是什么呢?哎,我们来写一下except,我们都写一下吧,出哎中放置的是哎有可能哎出现我们这个错。
15:07
错误的一个代码啊,有可能出现错误的代码except except中,哎放置的是我们这个出错以后的什么呀?诶出错以后的这个处理方式啊处理方式,那这里边我们现在没什么处理方式是吧?我们这直接写一个print,哎,Print,哎来一个哈哈哈哈哈,来干嘛呀,出错了啊,出错了是吧,这一保存,那现在我们来看效果啊,现在我先改成实出一样,这个时候有没有错,哎这个时候是没有错的啊,这个时候是没有错的,所以它可以正常执行,所以我们会看到控制台里边是不是给我们打着印出一个5.0啊,哎,这个时候是没问题的啊,没问题的,但是现在来看,我现在还是改成十除以零,那这个时候是不是就出错了,哎,这个时候就出错了,那再来看我们这回什么效果,那这个还执不执行,诶肯定不执行,一执行是不是就终止了,哎有一执行就终止了,我们这一保存一执行来看出现什么了,是不是,哈哈哈出错了,哎哈哈出错了,所以这个东西有点像什么。
16:07
上一个if else,如果没错就执行它,如果有错是不是就执行,执行这玩意儿,哎执行这玩意儿,那这个就是我们一个效果啊一个效果,那这样它有什么作用,我们来干嘛,我们来说一下,哎我们可以什么呢?哎可以将哎这个可能出错这个代码,哎放入到哪呢?哎放入到我们这个TRY语句中,哎TRY语句中,那这样如果什么呢?诶如果我们这个代码没有错误,诶没有错误则什么呢?诶则会正常执行。正常执行,如果什么呢?如果出现错误啊,如果出现错误则会执行什么呢?我们这个except这个诶子句中的这个代码块。
17:00
哎,子句中的这个代码块,那这样这样的嘛,这样我们就可以通过我们这个代码,哎来处理异常啊,处理异常避免什么呢?哎,避免因为一个异常,哎导致我们这个整个程序的一个什么呀?哎,整个程序的一个终止啊,避免因为一个异常导致我们整个程序的一个终止,这个就是我们这个TRY语的一个作用,那这样你会发现其实它是不是没错就可以执行了,哎有错才会退出,当然在这里我们还可以再放一个什么呢?哎放一个这个else else,我们来看一下,直接print print,我们这写一个写一个什么呀,哎,写一个,哎程序正常执行。哎,没有错误啊,没有错误,那现在来看,现在是不是除以零啊,哎,除以零我们这一直行走一个,哎是不是出错了,出错的时候else直奔执行,诶else是没有执行的,但是当我这是除以二的时候,我们这一保存走一个,诶5.0程序正常执行是不是没有错误啊,这个时候是不是执行它了,哎所以这个非常简单,有错误就没有错误就执行这个,还有这个,而如果是有错误就执行这个什么呀,Except啊就是执行这个except,那它的好处就是什么呀?哎,避免我们说因为一个小错误导致我们程序的什么呀,哎程序的一个终止,那这个就是我们异常处理的一个最简单最基本的一个方式,那这里边可能还是你在看的时候,你还是觉得很奇怪,因为这行代码是不是很明显出错误了,很明显有错,那你这个时候还这么写就很奇怪,所以还是那句话,我们真正在开发的时候,那个错误并不是那么明显,或者说他有可能出错,有可能没出错,没有那么明显,所以这个时候就必须要用到什么。
18:51
用到这个串,按照这个串好,那这个是我们对异常的一个简单的介绍,那接下来你先来把我们这个来尝试写一下,先把这个句式结构来熟悉一下,待会儿我们再展开来讲,它还有什么需要我们注意的地方啊,我们先来听一下。
我来说两句