有哪些异常?
异常就是当操作不符合python的规定的时候报出的提示信息,可以看小甲鱼整理的 python标准异常总结
如何捕获异常?
第一种方法: try — except 语句
语法:
try:
检测范围
except Exception [as reason]:
出现异常后(Exception )的处理代码
例子:
>>> try:
f = open ('wos.txt')
print(f.read())
f.close()
except OSError:
print('出错了')
出错了
>>> try:
f = open ('wos.txt')
print(f.read())
f.close()
except OSError as reason:
print('出错了,错误的原因是:'+str(reason))
出错了,错误的原因是:[Errno 2] No such file or directory: 'wos.txt'
>>> try:
sum = 1 + '1'
f = open ('wos.txt')
print(f.read())
f.close()
except OSError as reason:
print('出错了,错误的原因是:'+str(reason))
except TypeError as reason:
print('类型出错了,错误的原因是:'+str(reason))
类型出错了,错误的原因是:unsupported operand type(s) for +: 'int' and 'str'
>>>
也可以把异常放在一起处理:
>>> try:
sum = 1 + '1'
f = open ('wos.txt')
print(f.read())
f.close()
except (OSError,TypeError):
print('出错啦')
出错啦
>>>
第二种方法: try — finally 语句
语法:
try:
检测范围
except Exception [as reason]:
出现异常后(Exception )的处理代码
finally:
无论如何都会被执行的代码
先举一个反例如下:
>>> try:
f = open ('D:\\exception.txt','w')
print(f.write('我有内容'))
sum = 1 + '1'
f.close() #关闭文件是在异常处理的外面,当遇到异常的时候就不会关闭了
except (OSError,TypeError):
print('出错啦')
4
出错啦 #这时候去D盘下看exception.txt文件并没有内容。
所以嘞,引入了finally,把关闭操作放在这个下面
>>> try:
f = open ('D:\\exception.txt','w')
print(f.write('我有内容'))
sum = 1 + '1'
except (OSError,TypeError):
print('出错啦')
finally:
f.close()
4
出错啦 #这时候去D盘下看exception.txt文件是有内容的
自己的代码引发异常 (raise)
>>> 1/0
Traceback (most recent call last):
File "<pyshell#77>", line 1, in <module>
1/0
ZeroDivisionError: division by zero
>>> raise ZeroDivisionError('除数为0的异常')
Traceback (most recent call last):
File "<pyshell#78>", line 1, in <module>
raise ZeroDivisionError('除数为0的异常')
ZeroDivisionError: 除数为0的异常
>>>
打开的文件如果担心忘记关闭则使用 with语句:
try:
with open ('D:\\exception.txt','w') as f:
print(f.write('我有内容'))
sum = 1 + '1'
except (OSError,TypeError):
print('出错啦')
4
出错啦
>>>
网友评论