exception
常见标准异常总结:https://fishc.com.cn/thread-45814-1-2.html
如何检测异常并处理异常
try-except
使用格式:
try:
检测范围
except Exception[as reason]:
出现异常后的处理代码
try:
f = open('why is me.txt')
print(f.read())
f.close()
except OSError:
print("打开文件出错啦!")
如果想要将错误居来提类型打印出来,可以这样:
try:
f = open('why is me.txt')
print(f.read())
f.close()
except OSError as reason:
print("打开文件出错啦!\n错误的原因是:"+ str(reason))
注:
- 也可以在后面并列多个except ,比如继续并列:except TypeError as reason:
- 直接except:表示,任何类型的错误发生后,运行 ’ :’ 后的代码
- 可以用元组包括多个类型错误报错比如,except (OSError, TypeError) :
try-finally
使用格式:
try:
检测范围
except Exception[as reason]:
出现异常(exception)后的处理代码
finally:
无论你如何都会被执行的代码
这是一个写入文件,如果没有加最后finally后面的语句,则新文件内没有写入具体内容。
try:
f = open('fffff.txt','w')
f.write('I love You!')
sum = 1 + 'i'
f.close()
except (OSError, TypeError):
print("出错啦!")
finally:
f.close()
raise语句
>>> raise
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
raise
RuntimeError: No active exception to reraise
>>> raise ZeroDivisionError
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
raise ZeroDivisionError
ZeroDivisionError
>>> raise ZeroDivisionError('除数为0的异常')
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
raise ZeroDivisionError('除数为0的异常')
ZeroDivisionError: 除数为0的异常