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
| +