class My_custom_exception(Exception):
def __init__(self, ErrNum, *arg, **kwargs):
self.ErrNum = int(ErrNum)
self.ErrMsg = "" # Set appropriate message depending an error number
if self.ErrNum & 0x00000000 !=0:
self.ErrMsg = "NO ERROR"
if self.ErrNum & 0x00000001 !=0:
self.ErrMsg = "Error 1 occured"
if self.ErrNum & 0x00000002 !=0:
self.ErrMsg = "Error 2 occured"
if self.ErrNum & 0x00000004 !=0:
self.ErrMsg = "Error 3 occured"
if self.ErrNum & 0x00000008 !=0:
self.ErrMsg = "Error 4 occured"
def __str__(self):
return "ERROR (0x%08X): %s" % (self.ErrNum, self.ErrMsg )
def __repr__(self):
return self.__str__()
def check_error(error_nr):
if error_nr > 0:
raise My_custom_exception(error_nr)
try:
check_error(3)
except My_custom_exception as e:
print e
输出:
My_custom_exception (0x00000003): Error 2 occurred.
我的目标是打印Error 1 occurred
和Error 2 occurred
另一个问题是,如果我给出check_error(5)
,那么Error 4 occurred
,我也想避免这个问题
这可能有效:收集列表中的错误(格式化可能需要一些工作,但这应该是一个开始):
示例的输出:
我会这样做:
注意,通过将错误消息提取到dictionary类属性中,这简化了代码;将其作为一个单独的方法也可以更容易地进行单独测试:
使用中:
相关问题 更多 >
编程相关推荐