检测到无效的异常处理程序例程。_Python龙珠训练营三:异常处理

dbd085ed79efb6bb46ea814c7c07660a.png

异常就是运行期检测到的错误。计算机语言针对可能出现的错误定义了异常类型,某种错误引发对应的异常时,异常处理 程序将被启动,从而恢复程序的正常运行。

3.1 Python 标准异常总结

1. BaseException:所有异常的 基类

2. Exception:常规异常的 基类

3. StandardError:所有的内建标准异常的基类

4. ArithmeticError:所有数值计算异常的基类

5. FloatingPointError:浮点计算异常

6. OverflowError:数值运算超出最大限制

7. ZeroDivisionError:除数为零

8. AssertionError:断言语句(assert)失败

9. AttributeError:尝试访问未知的对象属性

10. EOFError:没有内建输入,到达EOF标记

11. EnvironmentError:操作系统异常的基类

12. IOError:输入/输出操作失败

13. OSError:操作系统产生的异常(例如打开一个不存在的文件)

14. WindowsError:系统调用失败

15. ImportError:导入模块失败的时候

16. KeyboardInterrupt:用户中断执行

17. LookupError:无效数据查询的基类

18. IndexError:索引超出序列的范围

19. KeyError:字典中查找一个不存在的关键字

20. MemoryError:内存溢出(可通过删除对象释放内存)

21. NameError:尝试访问一个不存在的变量

22. UnboundLocalError:访问未初始化的本地变量

23. ReferenceError:弱引用试图访问已经垃圾回收了的对象

24. RuntimeError:一般的运行时异常

25. NotImplementedError:尚未实现的方法

26. SyntaxError:语法错误导致的异常

27. IndentationError:缩进错误导致的异常

28. TabError:Tab和空格混用

29. SystemError:一般的解释器系统异常

30. TypeError:不同类型间的无效操作

31. ValueError:传入无效的参数

32. UnicodeError:Unicode相关的异常

33. UnicodeDecodeError:Unicode解码时的异常

34. UnicodeEncodeError:Unicode编码错误导致的异常

35. UnicodeTranslateError:Unicode转换错误导致的异常

异常体系内部有层次关系,Python异常体系中的部分关系如下所示:

676b32505ac5b964b8ce0ea8c3fbfe84.png

3.2 Python标准警告总结

1. Warning:警告的基类

2. DeprecationWarning:关于被弃用的特征的警告

3. FutureWarning:关于构造将来语义会有改变的警告

4. UserWarning:用户代码生成的警告

5. PendingDeprecationWarning:关于特性将会被废弃的警告

6. RuntimeWarning:可疑的运行时行为(runtime behavior)的警告

7. SyntaxWarning:可疑语法的警告

8. ImportWarning:用于在导入模块过程中触发的警告

9. UnicodeWarning:与Unicode相关的警告

10. BytesWarning:与字节或字节码相关的警告

11. ResourceWarning:与资源使用相关的警告

3.3 try - except 语句

try:
检测范围
except Exception[as reason]:
出现异常后的处理代码

try 语句按照如下方式工作:

1. 首先,执行 try 子句(在关键字 try 和关键字 except 之间的语句)

2. 如果没有异常发生,忽略 except 子句, try 子句执行后结束。

3. 如果在执行 try 子句的过程中发生了异常,那么 try 子句余下的部分将被忽略。如果异常的类型和 except 之后的名称相符,那么对应的 except 子句将被执行。最后执行 try 语句之后的代码。

4. 如果一个异常没有与任何的 except 匹配,那么这个异常将会传递给上层的 try 中。

使用多个 except 代码块时,必须坚持对其规范排序,要从最具针对性的异常到最通用的异常。

3.4 try - except - finally 语句

不管 try 子句里面有没有发生异常, finally 子句都会执行。

如果一个异常在 try 子句里被抛出,而又没有任何的 except 把它截住,那么这个异常会在 finally 子句执行后被抛出。

3.5 try - except - else 语句

如果在 try 子句执行时没有发生异常,Python将执行 else 语句后的语句。

try:
检测范围
except:
出现异常后的处理代码
else:
如果没有异常执行这块代码

使用 except 而不带任何异常类型,这不是一个很好的方式,我们不能通过该程序识别出具体的异常信息,因为它捕获所有的异常。

try:
检测范围
except(Exception1[, Exception2[,...ExceptionN]]]):
发生以上多个异常中的一个,执行这块代码
else:
如果没有异常执行这块代码

注意: else 语句的存在必须以 except 语句的存在为前提,在没有 except 语句的 try 语句中使用 else 语句,会引发 语法错误。

3.6 raise语句

Python 使用 raise 语句抛出一个指定的异常。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值