文档库 最新最全的文档下载
当前位置:文档库 › 黑马程序员python基础班教程笔记:(51)异常简介

黑马程序员python基础班教程笔记:(51)异常简介

黑马程序员python基础班教程笔记:(51)异常简介
黑马程序员python基础班教程笔记:(51)异常简介

异常

<1>异常简介

看如下示例:

运?结果:

案例剖析

<1>捕获异常try...except... 看如下示例:

?总结:

<2>获取异常的信息描述看如下示例:

想?想:

<3> except捕获多个异常#cod

ing=

utf-

8

try:

print('-----test--1---')

# 如果123.txt?件不存在,那么会产?IOError 异常

open('123.txt',

'r')

print('-----tes

t--2---')

# 如果num变量没有定义,那么会产?NameError 异常

print(num)

except (IOError,NameError),

errorMsg:

#如果想通过?次except捕获到多个异常可以??个元组的?式

# errorMsg?会保存捕获到

的错误信息

print(errorMsg)

注意:

如果想捕获所有的异常,可以省略 except 后?的变量

但是这种?法不建议?家使?,会隐藏?些开发者没有想到的异常情况

<4> try...finally...

try...finally...语句?来表达这样的情况:

不管线捕捉到的是什么错误,?论错误是不是发?,这些代码“必须”运 ?,?如?件关闭,释放锁,把数据库连接返还给连接池等 demo:

说明:

import time try :

f = file('test.txt') while True :

line = f.readline() if len(line) == 0:

break time.sleep(2) print(line)

finally : f.close()

test.txt ?件中每??数据打印,但是我有意在每打印??之前? time.sleep ?法暂停2秒钟。这样做的原因是让程序运?得慢?些。在程 序运?的时候,按Ctrl-c 中断/取消程序。

我们可以观察到KeyboardInterrupt 异常被触发,程序退出。但是在程序 退出之前,finally 从句仍然被执?,把?件关闭。

<4> else

咱们应该对 else 并不陌?,在if 中,它的作?是当条件不满?时执?的实 ?;同样在try...except...中也是如果,即如果没有捕获到异常,那么就执? else 中的事情

运?结果如下:

try :

num = 100 print num

except NameError, errorMsg: print('

产?错误了:%s'%errorMsg) else :

print('没有捕获到异常,真

?兴')

finally :

相关文档