python-将异常传递给下一个除外语句
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-将异常传递给下一个除外语句,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1246字,纯文字阅读大概需要2分钟。
内容图文
我在Python中使用try … except块捕获异常.该程序尝试使用os.makedirs创建目录树.如果引发WindowsError:目录已存在,我想捕获异常,什么也不做.如果引发任何其他异常,我将捕获该异常并设置一个自定义错误变量,然后继续执行脚本.
理论上的工作如下:
try:
os.makedirs(path)
except WindowsError: print "Folder already exists, moving on."
except Exception as e:
print e
error = 1
现在,我想对此加以增强,并确保WindowsError的except块仅处理那些错误消息包含“目录已存在”且没有其他内容的异常.如果还有其他WindowsError,我想在下一个except语句中处理它.但不幸的是,以下代码不起作用,并且没有捕获到异常:
try:
os.makedirs(path)
except WindowsError as e:
if "directory already exists" in e:
print "Folder already exists, moving on."
else: raise
except Exception as e:
print e
error = 1
如何实现我的第一个except语句专门捕获“目录已存在”异常,而所有其他语句在第二个except语句中得到处理?
解决方法:
使用一个异常块,并在特殊情况下在那里进行处理;您可以只使用isinstance()来检测特定的异常类型:
try:
os.makedirs(path)
except Exception as e:
if isinstance(e, WindowsError) and "directory already exists" in e:
print "Folder already exists, moving on."
else:
print e
error = 1
注意,这里我不依赖于异常的类似容器的性质.我会明确测试args属性:
if isinstance(e, WindowsError) and e.args[0] == "directory already exists":
内容总结
以上是互联网集市为您收集整理的python-将异常传递给下一个除外语句全部内容,希望文章能够帮你解决python-将异常传递给下一个除外语句所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。