首页 / PYTHON / python 捕获异常
python 捕获异常
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python 捕获异常,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2812字,纯文字阅读大概需要5分钟。
内容图文
捕获异常:
try:
print('-----test--1---')
open('123.txt','r')
print('-----test--2---')
except:
pass
说明:
此程序看不到任何错误,因为用except 捕获到了异常,并添加了处理的代码
pass 表示实现了相应的实现,但什么也不做;如果把pass改为print语句,那么就会输出其他信息
总结:
把可能出现问题的代码,放在try中, 把处理异常的代码,放在except中
捕获指定异常:
try:
print(num)
except IOError:
print('产生错误了')
想一想:
上例程序,已经使用except来捕获异常了,为什么还会看到错误的信息提示?
答:
except捕获的错误类型是IOError,而此时程序产生的异常为 NameError ,所以except没有生效
修改后的代码为:
try:
print(num)
except NameError:
print('变量使用出现错误')
捕获多个指定异常
try:
print('-----test--1---')
open('123.txt','r') # 如果123.txt文件不存在,那么会产生 IOError 异常
print('-----test--2---')
print(num)# 如果num变量没有定义,那么会产生 NameError 异常
except (IOError,NameError):
#如果想通过一次except捕获到多个异常可以用一个元组的方式
pass
注意:
当捕获多个异常时,可以把要捕获的异常的名字,放到except 后,并使用元组的方式进行存储
访问异常信息:
如果程序需要在except块中访问异常处理对象的相关信息,则可通过为异常对象声明变量来实现,当python解释器决定用哪个except块处理该异常对象,会将异常对象赋值给except块后的异常变量,程序即可通过该变量来获得异常对象的相关信息,所有的异常对象都包含了如下几个常用的属性和方法
1:args: 该属性返回异常的错误编号和描述字符串
2:errno: 该信息返回异常的错误编号
3:strerror: 该属性返回异常的描述字符串
4:with_traceback(): 通过该方法可处理异常的传播轨迹信息
代码演示:
def foo():
try:
fis = open('a.txt')
except Exception as e:
#访问异常的错误编号和详细信息
print(e.args)
#访问异常的错误编号
print(e.error)
#访问异常的详细信息
print(e.strerror)
foo()
else 语句:
咱们应该对else并不陌生,在if中,它的作用是当条件不满足时执行的实行;同样在try…except…中也是如此,即如果没有捕获到异常,那么就执行else中的事情
try:
num = 100 print(num)
except NameError as errorMsg:
print('产生错误了:%s'%errorMsg)
else: print('没有捕获到异常,真高兴')
try…finally…
try…finally…语句用来表达这样的情况:
在程序中,如果一个段代码必须要执行,即无论异常是否产生都要执行,那么此时就需要使用finally。 比如文件关闭,释放锁,把数据库连接返还给连接池等。
try:
f = open(‘test.txt’)
try:
while True:
content = f.readline()
if len(content) == 0:
break
print(content)
except:
#如果在读取文件的过程中,产生了异常,那么就会捕获到
#比如 按下了 ctrl+c
pass
finally:
f.close()
print('关闭文件')
except:
print("没有这个文件")
说明:
我们可以观察到KeyboardInterrupt异常被触发,程序退出。但是在程序退出之前,finally从句仍然被执行,把文件关闭。
在通常情况下,不要再finally语句中使用return或者raise等导致方法终止的语句,一旦在finally语句中使用了return或者raise语句,将会导致try块,except块中的return、raise语句失效,代码如下:
def test():
try:
#因为finally块中包含了return语句
#所以下面的return语句失去作用
return True
finally:
return False
a = test()
print(a)
程序输出False
内容总结
以上是互联网集市为您收集整理的python 捕获异常全部内容,希望文章能够帮你解决python 捕获异常所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。