+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2020-06(1)

Python笔记之try捕获异常

发布于2020-06-30 10:25     阅读(32)     评论(0)     点赞(0)     收藏(0)


在程序开发中,如果对某些代码的执行不能确定(程序语法完全正确)可以用try关键字来捕获异常

try的工作原理当开始一个try语句后,python就在当前程序的上下文中作标记,这样当异常出现时就可以回到这里,try子句先执行,接下来会发生什么依赖于执行时是否出现异常。

如果当try后的语句执行时发生异常,python就跳回到try并执行第一个匹配该异常的except子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)。

如果在try后的语句里发生了异常,却没有匹配的except子句,异常将被递交到上层的try,或者到程序的最上层(这样将结束程序,并打印默认的出错信息)。

如果在try子句执行时没有发生异常,python将执行else语句后的语句(如果有else的话),然后控制流通过整个try语句。

用法:

try:尝试执行的代码

except:发生异常,执行这块代码

else:如果没有异常执行这块代码

1

try:
    fh = open("testfile", "w")
    fh.write("这是一个测试文件,用于测试异常!!")
except IOError:
    print "Error: 没有找到文件或读取文件失败"
else:
    print("内容写入文件成功")
fh.close()

当可能有多个异常时,可以采用以下方式:

except(Exception1[, Exception2[,...ExceptionN]]])

发生以上多个异常中的一个,执行这块代码......

try-finally语句无论是否发生异常都将执行最后的代码。

2:上例1可以写成以下形式

try:
    fh = open("testfile", "w")
    try:
        fh.write("这是一个测试文件,用于测试异常!!")
    finally:
        print "关闭文件"
        fh.close()
except IOError:
print "Error: 没有找到文件或读取文件失败"
#当在try块中抛出一个异常,立即执行finally块代码。finally块中的所有语句执行后,
异常被再次触发,并执行except块代码。参数的内容不同于异常。

触发异常

我们可以使用raise语句自己触发异常

raise语法格式:raise [Exception [, args [, traceback]]]

语句中 Exception 是异常的类型(例如,NameError)参数标准异常中任一种,args 是自已提供的异常参数。

最后一个参数是可选的(在实践中很少使用),如果存在,是跟踪异常对象。

注意:一个异常可以是一个字符串,类或对象。 Python的内核提供的异常,大多数都是实例化的类,这是一个类的实例的参数。







所属网站分类: 技术文章 > 博客

作者:xiaofangniu1989

链接: https://www.pythonheidong.com/blog/article/430704/

来源: python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

0 0
收藏该文
已收藏

评论内容:(最多支持255个字符)