使用类引发手动定义的错误

时间:2016-12-07 19:53:44

标签: python python-2.7 python-3.x

class MissingnumError (CheckError):
    def __init__(self, num, type =  "Animal" ):
        self.num = num
        self.type = type 
    def __str__(self):
        forma = '%s #%d not found'%(self.type,self.num) 
        return forma
    def __repr__(self):
        return str(self)

如果我想访问此错误并从其他类中提升它,我该怎么办? 假设我在一个不同的类中定义了一些函数,我将用于循环动物列表但是如果没有找到动物,我将需要提出上述错误。如何访问它并让它打印 str :forma ???

示例:

def myfnction(self, animal):
    for something in listofthings:
        if something == animal:
            return something
    raise MissingnumError 

如何通过访问上面的类并打印 str ???

正确引发此错误

1 个答案:

答案 0 :(得分:0)

您只需raise它,向raise提供一个具有相应必需参数的实例(num中定义的__init__):

raise MissingnumError(1)

如果没有指定处理程序,Python只会__repr__并返回指定的消息:

MissingnumError: Animal #1 not found

另外两个注意事项:

  • 不要使用type作为参数名称。 Python已将type用于其他目的,并在方法体内屏蔽它。
  • CheckError应继承自Exception,这是您提供给raise的任何对象所必需的。