异常捕获与调试
异常
程序执行过程中遇到任何错误,带有error字样的 都是异常
异常处理
对代码中的可能会出现的异常,进行处理
1.处理某个错误
2.处理某种类型的错误(补充:错误类型具有分类,如:OSError包含了FileExistsError)
3.是错就抓 #常用
python标准异常:百度可得
异常捕获
1.捕获一个异常
表现形式:
try:
可能出现异常的代码
except 异常的名字:
遇到异常时的处理方式
例子:
import os try: #警察 os.mkdir('other_file') #嫌疑人 except FileExistsError: print('抓捕归案,等待进一步处理')
反例: ---抓捕错误则不再执行后续
2.捕获多个异常 #逗号隔开异常名字
表现形式:
try:
可能出现异常的代码块
except (异常的名字1,异常的名字2):
遇到异常时的处理方式
3.捕获所有异常
表现形式: # Exception 可以不加
try:
可能出现异常的代码块
except Exception:
遇到异常时的处理方式
import os try: #警察 os.mkdir('other_file') # FileExistsError 嫌疑人 except Exception: # Exception 捕获所有异常 print('抓捕归案,等待进一步处理') #输出内容:抓捕归案,等待进一步处理
捕获异常时获取异常的描述信息
产生异常时除了需要处理异常之外有时还需知道产生异常的原因
表现形式:
try:
可能出现异常的代码块
except Exception as 变量名:
遇到异常时的处理方式
打印变量
例子:(other_file已存在不可再新建)
import os try: #警察 os.mkdir('other_file') # FileExistsError 嫌疑人 except Exception as e: # 把错误抓起来存到变量e里面去 print('抓捕归案,等待进一步处理') print('你犯的错是:{0}'.format(e))
输出:
#输出内容: /usr/local/bin/python3.7 /Users/tuyoo/Documents/pytext/test02/other_file/aaa.py 抓捕归案,等待进一步处理 你犯的错是:[Errno 17] File exists: 'other_file' Process finished with exit code 0
异常处理中使用finally
try ... except 异常类型... finally ...
含义:无论是否捕获到异常,最后都需执行finally中的代码块
例子:(other_file已存在不可再新建)
import os try: #警察 os.mkdir('other_file') # FileExistsError 嫌疑人 except NameError as e: # 抓错异常后,理论上不再继续执行 print('抓捕归案,等待进一步处理') print('你犯的错是:{0}'.format(e)) finally: #无论是否犯错都要执行 print('天下武功唯快不破')
输出:
#输出内容: /usr/local/bin/python3.7 /Users/tuyoo/Documents/pytext/test02/other_file/aaa.py Traceback (most recent call last): File "/Users/tuyoo/Documents/pytext/test02/other_file/aaa.py", line 59, in <module> os.mkdir('other_file') FileExistsError: [Errno 17] File exists: 'other_file' 天下武功唯快不破
异常处理中使用else
try ... except 异常类型 ... else ...
例子:(other_file已存在不可再新建)
import os try: #警察 os.mkdir('other_file') # FileExistsError 嫌疑人 except Exception as e: # 抓错异常后,理论上不再继续执行下去 print('抓捕归案,等待进一步处理') print('你犯的错是:{0}'.format(e)) else: #跟try下边的代码同体,一旦try遇见异常就也不再执行 print('天下武功唯快不破')
输出(报错): #try有错不再执行else下的语句
/usr/local/bin/python3.7 /Users/tuyoo/Documents/pytext/test02/other_file/aaa.py
抓捕归案,等待进一步处理
你犯的错是:[Errno 17] File exists: 'other_file'