异常对象

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
上一页