|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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的异常
复制代码
|
评分
-
查看全部评分
|