如何在Python中处理用户定义的异常?

时间:2014-05-29 17:31:52

标签: python python-2.7

如果我定义了一个错误模块,其中包含我的应用程序定义的异常,例如:

class Error(Exception):
        pass

class NoSchemaVersion(Error):
        def __init__(self):
                self.code = 1
                self.msg  = "No schema version specified"
        pass


class NoMsgType(Error):
        def __init__(self):
                self.code = 2
                self.msg = "No message type specified"
        pass

如何在引发特定异常时处理它们。我试过像:

import Error
errors = Error.Error()

try:
   <do some stuff>
except errors.NoMsgType:
   <stuff>

但是我收到了消息:

AttributeError: 'Error' object has no attribute 'NoMsgType'

我做错了什么?

2 个答案:

答案 0 :(得分:5)

Error.Error()(存储在error中)构造Error类的新值,但NoMsgType是一个单独的类,实际上不是{{1}的一部分因此Error不存在。要抓住error.NoMsgType,您应该只写NoMsgType

答案 1 :(得分:1)

我想你需要做这样的事情:

try:
    somecode
except Error.NoMsgType:
    morecode