python3捕获异常try/except

代码中的错误分两大类:错误和异常

错误:主要是语法错误,在敲代码时候编辑器提示的错误。

异常:一段代码在运行前无法判断是否会出错。运行时可能出错,也可能不出错。

为什么要捕获异常呢?

例如下面代码,运行前无法判断是否能写入成功。如果没有异常,那么这样写是可以的,执行完写入之后会打印“完成”两字。

f = open("测试.txt", "w")
f.write("写入点内容到上面的测试文件,用于测试异常!!")
f.close()
print("完成")

如果我把文件属性设置为了只读。

再执行上面代码,将会报一个异常,无法使用写模式打开。程序到此结束,无法打印后面的“完成”。

当使用捕获异常后,如果出现了异常,那么代码将在执行try出现异常时跳转到执行except中的代码,无论try中的代码是否有异常,程序最终依旧能走下去。

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

执行完输出结果可以看到输出了错误并打印了完成,说明程序没有被异常打断。

菜鸟教程Python3中有详细捕获异常类型,这里不重复解答,附上学习链接:https://www.runoob.com/python3/python3-errors-execptions.html

注意:Python 2和3中对except子句的处理方式不一样。

Python2

try:
    pass
except OSError, err: # , 加参数名称 
    print ('Exception is: ', err)

Python3   

try:
    pass
except OSError as err:        # as 加参数名称
    print ('Exception is: ', err)

 

 


版权声明:本文为weixin_41078495原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。