【Python 基础教程】 第8章 异常

本文详细介绍了Python中的异常处理机制,包括异常是什么、如何引发和捕获异常,特别是自定义异常类和多异常捕获策略。通过具体示例展示了try/except/finally语句的使用,并探讨了异常与函数的关系以及如何使用警告来提示非致命错误。
摘要由CSDN通过智能技术生成


8.1 异常是什么

>>> 1/0

---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)
<ipython-input-85-05c9758a9c21> in <module>()
----> 1 1/0

ZeroDivisionError: division by zero

如上,Python使用异常对象来表示异常状态,并在遇到错误时引发异常。异常对象未被处理(捕获)时,程序将终止并显示一条错误消息(Traceback)。

每个异常都是每个类(这里是 ZeroDivisionError)的实例。你能以各种方式引发和捕获这些实例,从而逮住错误并采取措施而不是放任整个程序的失败。


8.2 让事情沿你指定的轨道出错

如何自主地引发异常,如何创建异常,如何处理异常


8.2.1 raise 语句

引发异常。

# 增加一个异常并添加了错误信息的注释
>>> raise Exception("这里有一个错误") 

---------------------------------------------------------------------------
Exception                                 Traceback (most recent call last)
<ipython-input-89-5f15955ab2d6> in <module>()
----> 1 raise Exception("这里有一个错误")

Exception: 这里有一个错误

Exception 是Python的内置异常类,表示通用异常,没有指出什么错误。其他的内置异常类,都是从 Exception 派生出来的。

Python内置异常类层次关系图:

BaseException
 +-- SystemExit
 +-- KeyboardInterrupt
 +-- GeneratorExit
 +-- Exception          #本章介绍的异常类
      +-- StopIteration
      +-- StandardError
      |    +-- BufferError
      |    +-- ArithmeticError
      |    |    +-- FloatingPointError
      |    |    +-- OverflowError
      |    |    +-- ZeroDivisionError
      |    +-- AssertionError
      |    +-- AttributeError 
      |    +-- EnvironmentError
      |    |    +-- IOError
      |    |    +-- OSError
      |    |         +-- WindowsError (Windows)
      |    |         +-- VMSError (VMS)
      |    +-- EOFError
      |    +-- ImportError
      |    +-- LookupError
      |    |    +-- IndexError
      |    |    +-- KeyError
      |    +-- MemoryError
      |    +-- NameError
      |    |    +-- UnboundLocalError
      |    +-- ReferenceError
      |    +-- RuntimeError
      |    |    +-- NotImplementedError
      |    +-- SyntaxError
      |    |    +-- IndentationError
      |    |         +-- TabError
      |    +-- SystemError
      |    +-- TypeError
      |    +-- ValueError
      |         +-- UnicodeError
      |              +-- UnicodeDecodeError
      |              +
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值