在python中,只需继承Exception,就可以实现自定义异常类
class printException(Exception):
pass
只有两行代码,是不是很简单呢,那么如何使用呢?
def testRaise():
raise printException('printErr')
try:
testRaise()
except printException,e:
print e
捕捉到异常后,打印出的内容就是printErr,看来使用起来也很方便,这里要牢记,一旦使用了raise,那么之后的语句就不会再执行了,因为这里抛出了一个异常
上面的例子虽然简单,但是有一点不足,每一次raise的时候,我们都都需要写异常的说明,也就是printErr这个字符串,接下来,稍微做一点改进
class DatabaseException(Exception):
def __init__(self,err='数据库错误'):
Exception.__init__(self,err)
class PreconditionsException(DatabaseException):
def __init__(self,err='PreconditionsErr'):
DatabaseException.__init__(self,err)
新定义的两个异常类,各自有自己的初始化代码,并有一个默认的错误说明,这样raise的时候,就不需要自己再输入错误说明了
使用起来也一样的方便
def testRaise():
raise DatabaseException()
try:
testRaise()
except DatabaseException,e:
print e
最终的输出结果就是“数据库错误”
如果你不确定抛出来的异常是什么,那么就except Exception ,因为这是所以异常类的基类,因此,这样写可以捕获到所有的异常类,上面的例子中,如果改成这样
except PreconditionsException,e:
那么,程序是不会捕获到异常的,因为此刻,抛出是PreconditionsException的基类,此处无法捕获,程序终止