目录
目录
前言
我们写的python程序,经常会出现异常与错误,从而导致我们的程序崩溃,今天我们就来学习一下python的异常处理,以便日后的编写流畅的代码。
(一)常见的异常
说明 | 错误类型 |
---|---|
语法错误 | |
除零异常 | |
名称异常 | |
类型异常 | |
索引异常 | |
键异常 | |
值异常 | |
属性异常 | |
迭代器异常 | |
上面的这些异常都是继承:Exception对象。
(二)异常的处理
1.异常的预防:
(1)说明:
有些异常时可以避免的,我们可以添加判断语句,来预防避免异常的发生。
也就是添加容错机制。
(2)源代码:
"""
有一些异常我们是可以预防的,其办法是就添加容错机制
"""
def div(x, y):
if y != 0:
return x/y
print("请注意分母不能为零")
return 0
div(1, 0)
(3)输出效果:
2.解决已经知道类型的异常
(1)说明
解决异常的完整框架:
try:
可能出现异常的代码(可以写多个异常的代码,不过只要遇到第一个异常,就结束该部分的代码,跳转到except部分。)except 错误类型 [as zero]:
发生该错误类型的异常,执行的代码。(可以写多个except 语句并列,从而来接收有可能的异常。)else:
不发生异常,执行的代码。finally:
不管发生与不发生,都有要执行的代码。
(2)源代码
try:
1/0
except ZeroDivisionError as zero:
print("除零异常", zero)
else:
print("没有发生异常")
finally:
print("我最后都是要执行的")
(3)输出效果
3.合并处理多个异常
(1)说明
except 后面可以接收元组类型的多个异常类型名。
except (error1, error2……)
(2)源代码
try:
1/0
print(name)
except (ZeroDivisionError, NameError) as zero:
print("异常类型", zero)
else:
print("没有发生异常")
finally:
print("我最后都是要执行的")
(3)输出效果
4处理未知类型的异常
(1)说明
由于大部分的异常对象都是继承Exception对象。所以我们可以用Exception来接收未知的错误类型。
(2)源代码
try:
1/0
print(name)
except Exception as ec:
print("异常类型", ec)
else:
print("没有发生异常")
finally:
print("我最后都是要执行的")
(3)输出效果
(三)with语句
(1)说明:
with语句也具有自动的容错机制,这里只记录with语句用于文件的操作。
(2)源代码:
"""
高级的文件操作--不需手动关闭文件,并且具有容错机制
"""
with open("test.txt", "r") as f:
# f文件对象
content = f.read()
print(content)
(3)输出效果:
test.txt文件内容是:
1234546
fldklfj dfkkldjf