马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
try-except 语句
try:
检测范围
except Exception[as reason]:
出现异常(Exception)后的处理代码
f = open('我为什么是一个文件.txt')
print(f.read())
f.close()
执行以上,会报filenotfounderror,属于oserror的子类。改进如下try:
f = open('我为什么是一个文件.txt')
print(f.read())
f.close()
except OSError:
print('文件出错啦')
执行完会打印文件出错啦
try:
f = open('我为什么是一个文件.txt')
print(f.read())
f.close()
except OSError as reason:
print('文件出错啦\n错误的原因是:' + str(reason))
执行结果:
文件出错啦
错误的原因是:[Error 2] No such file or directory:'我为什么是一个文件.txt'
try:
sum = 1 + '1'
f = open('我为什么是一个文件.txt')
print(f.read())
f.close()
except OSError as reason:
print('文件出错啦\n错误的原因是:' + str(reason))
except TypeError as reason:
print('类型出错啦\n错误的原因是:' + str(reason))
执行结果:
类型出错啦
错误原因是:unsupported operand type(s) for +:'int' and 'str'
try 语句一旦出现异常,下面的语句将不被执行直接跳到except
try:
sum = 1 + '1'
f = open('我为什么是一个文件.txt')
print(f.read())
f.close()
except (OSError ,TypeError): # 可以把错误类型用元组放一起,出现其中任何一个都会print
print('出错啦')
运行直接输出:出错啦
try-finally 语句try:
检测范围
except Exception[as reason]:
出现异常(Exception)后的处理代码
finally:
无论如何都会被执行的代码
注:finally无论如何都会被执行,如果try语句没异常直接跳到finally语句,如果try语句有异常,先经过except语句再到finally语句
try:
f = open('我为什么是一个文件.txt','w')
print(f.write('我存在了'))
sum = 1 + '1'
except (OSError ,TypeError): # 可以把错误类型用元组放一起,出现其中任何一个都会print
print('出错啦')
finally:
f.close() # 无论如何,文件都要关闭
raise语句 : 直接引出一个异常
>>> raise # 直接引一个异常出来
Traceback (most recent call last):
File "<pyshell#49>", line 1, in <module>
raise
RuntimeError: No active exception to reraise
>>> raise ZeroDivisionError # 引一个除数为0的异常
Traceback (most recent call last):
File "<pyshell#50>", line 1, in <module>
raise ZeroDivisionError
ZeroDivisionError
>>> raise ZeroDivisionError('除数为0的异常') # 给这个异常加上comments
Traceback (most recent call last):
File "<pyshell#51>", line 1, in <module>
raise ZeroDivisionError('除数为0的异常')
ZeroDivisionError: 除数为0的异常
|