如果我定义了一个错误模块,其中包含我的应用程序定义的异常,例如:
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'
我做错了什么?
答案 0 :(得分:5)
Error.Error()
(存储在error
中)构造Error
类的新值,但NoMsgType
是一个单独的类,实际上不是{{1}的一部分因此Error
不存在。要抓住error.NoMsgType
,您应该只写NoMsgType
。
答案 1 :(得分:1)
我想你需要做这样的事情:
try:
somecode
except Error.NoMsgType:
morecode