异常捕获与调试

异常

程序执行过程中遇到任何错误,带有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'

 

posted on 2018-10-20 18:08  暖暖_8023  阅读(194)  评论(0编辑  收藏  举报

导航