鱼C论坛

 找回密码
 立即注册
查看: 1786|回复: 0

[技术交流] 《零基础学习Python》33异常处理:你不可能总是对的2(try-except-finally)

[复制链接]
发表于 2017-9-10 13:32:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1、如何检测异常并处理
异常检测:try

1)try-except语句:
try:
检测范围
except Exception[as reason]:
出现异常(Exception)后的处理代码

  1. try:
  2.         int('abc')
  3.         sum = 1 + '1'
  4.         f = open('c:\\a.txt')
  5.         print(f.read())
  6.         f.close()
  7. except OSError as error:
  8.         print('文件出错了\n错误的原因是 %s' % str(error))
  9. except TypeError as error:
  10.          print('类型出错了\n错误的原因是 %s' % str(error))
  11. except:
  12.         print('出错了')
复制代码


文件出错了
错误的原因是 [Errno 2] No such file or directory: 'c:\\a.txt'

注:一个try可与多个except搭配使用;不推荐使用except包含所有的except;一旦出现异常,后面的代码不会执行;也可以把多个异常写在一起,如下:
  1. try:
  2.         int('abc')
  3.         sum = 1 + '1'
  4.         f = open('c:\\a.txt')
  5.         print(f.read())
  6.         f.close()
  7. except (OSError,TypeError):
  8.         print('出错了')
复制代码


2)try-finally语句
try:
检测范围
except Exception[as reason]:
出现异常(Exception)后的处理代码
finally:
无论如何都会被执行的代码
注:一般都把file.close()写到finally中

2、raise语句
1)
  1. >>> raise
  2. Traceback (most recent call last):
  3.   File "<pyshell#0>", line 1, in <module>
  4.     raise
  5. RuntimeError: No active exception to reraise
复制代码

2)
  1. >>> raise ZeroDivisionError
  2. Traceback (most recent call last):
  3.   File "<pyshell#2>", line 1, in <module>
  4.     raise ZeroDivisionError
  5. ZeroDivisionError
  6. >>> raise ZeroDivisionError('除数为零的异常')
  7. Traceback (most recent call last):
  8.   File "<pyshell#3>", line 1, in <module>
  9.     raise ZeroDivisionError('除数为零的异常')
  10. ZeroDivisionError: 除数为零的异常
复制代码

Q:如何自定义异常,并抛出自定义异常?

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 06:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表