Python基础语法 第9节课(异常处理)
作者:互联网
异常处理
一、捕获异常
1.背景:即程序出现了意想不到的情况,bug,如果异常不解决,程序会崩溃,停止运行
lst = ['hello'] #此处有很多行代码 print(lst[9])#异常,取不到索引为9的数据
print('running')#后面的代码都无法再正常运行
.
.
.
最基础的异常捕获
2.异常捕获(捕获异常)
如果出现异常,我们会让它按照事先规定的规则去执行对应的操作,记录错误日志:log
语法:
try(要运行有可能出现异常的代码):
要运行的代码
except(异常):
出现异常的时候要运行的代码(执行的操作),记录日志
注:1.try的语句会执行,不然就不会报错了。
2.一旦try里面的代码报错,立即跳到except,try报错代码的下面的剩余语句将不会执行
lst = ['hello'] try: print(lst[9]) except: print('记录错误日志') print('running....') print('finish') ''' 记录错误日志 running.... finish '''
3.如果try里面的代码没有出现异常,就不会执行except
lst = ['hello'] try: print(lst[0]) print('python-lemon')#try里面没有异常,都会执行完,不会进入except except: print('记录错误日志') print('running....') ''' hello python-lemon running.... '''
3.try......except Exception as err......
好的程序员:知道什么代码需要放到try里面
#需不需要加异常?? a = 4 b = 2 print(a*b)
a,b是变量,事先不知道是什么数据类型,就需要加异常,否则如果输入的是字符串,列表啥的,就会报错;如果事先知道就是int/float,就不需要加异常
a = '4' b = 'q' try: print(a*b) except: print('参数错误,记录日志')
上面的try.....except....捕获了异常,但是不知道到底是哪里出了bug.下面用:except Exception as err.会把错误类型赋值给err
a = 4 b = 0 try: print(a/b) except Exception as err: print('出现了异常:{}'.format(err)) #结果:出现了异常:division by zero
在实际操作中,最好用这个方法(try......except Exception as err......)。
4.异常捕获的进阶:指明出现的异常类型
先不要加异常,让它报错(开发主动报错),将报错的类型记住,去异常捕获的时候,加入except语句中
语法:
try:
代码
except 错误类型 as err:
print('异常{}'.format(err))
finally:-------------------→不管有没有报错,finally里面的代码都会执行。
print('hello word')
lst = ['hello'] a = 4 b = 0 try: print(a/b) print(lst[2]) except IndexError as err: print('出现了异常:{}'.format(err)) except ZeroDivisionError as err: print('出现除法异常:{}'.format(err)) finally: print('hello wold') #结果: ''' 出现除法异常:division by zero 出现除法异常:division by zero hello wold '''
二、手动抛出异常raise
raise手动抛出异常,让程序终止运行
def join_team(age,gender): if age > 22: raise ValueError('年龄要小于22') print('可以加入team') print(join_team(23,'girl')) ''' raise ValueError('年龄要小于22') ValueError: 年龄要小于22 '''
错误类型介绍
ImportError:无法引入模块或包
IndexError:下标索引超出序列边界
NameError:使用一个还未赋予对象的变量
SyntaxError:代码逻辑语法错误,不能执行,不能捕获
TypeError:传入的对象类型与要求不符合
ValueError:传入一个不被期望的值,即使类型正确
KeyError:试图访问你字典里不存在的key
IOError:输入输出异常,文件按操作
1.SyntaxError --------语法错误不能被捕获
try: ldljsdjlg'khkhkh' except: print('语法错误') #结果显示错误,不能捕获异常 ''' ldljsdjlg'khkhkh' ^ SyntaxError: invalid syntax '''
2.KeyError
dict1 = {'1':'one','2':'two'} print(dict1['3']) ''' print(dict1['3']) KeyError: '3' '''
3.IndexError
lst2 = [1,5,[8,9],'hello'] print(lst2[5]) ''' print(lst2[5]) IndexError: list index out of range '''
4.ValueError
a = 4 print(int('a')) ''' print(int('a')) ValueError: invalid literal for int() with base 10: 'a' '''
标签:try,err,Python,except,语法,print,节课,异常,hello 来源: https://www.cnblogs.com/ananmy/p/12873472.html