异常对象
Python 异常对象
Python 用异常对象(exception object)来表示异常情况。当程序在运行过程中遇到错误时,会引发异常。如果异常对象未被处理或捕捉,程序就会用所谓的回溯(Traceback,一种错误信息)终止执行。
>>> 1/0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ZeroDivisionError: integer division or modulo by zero
上面的 ZeroDivisionError
就是一个异常类,相应的异常对象就是该类的实例。Python 中所有的异常类都是从 BaseException
类派生的,常见的异常类型可以在这里查看。
自定义异常
创建自定义的异常类需要从 Exception 类继承,可以间接继承或直接继承,也就是可以继承其他的内建异常类。比如:
# 自定义异常类
class SomeError(Exception):
pass
try:
x = input('Enter x: ')
y = input('Enter y: ')
print x / y
except ZeroDivisionError as e:
print 'ZeroDivisionError:',e
except TypeError as e:
print 'TypeError:',e
except BaseException as e:
print 'BaseException:',e
raise SomeError('invalid value') # 抛出自定义的异常
else:
print 'no error!'
print 'hello world'
运行上面代码,当 x 输入一个回车键时,错误被打印出来,并抛出我们自定义的异常:
Enter x:
BaseException: unexpected EOF while parsing (<string>, line 0)
----------------------------------------------------------------------
SomeError Traceback (most recent call last)
<ipython-input-20-66060b472f91> in <module>()
12 except BaseException as e:
13 print 'BaseException:',e
---> 14 raise SomeError('invalid value')
15 else:
16 print 'no error!'
SomeError: invalid value