使用 try 和 except 的用户定义的异常错误

User defined exception error using try and except

我正在尝试在下面的二次根程序中创建一个用户定义的异常(使用 类)。 如果输入列表长度不是 3(3 个系数需要 3 个输入),目的是抛出错误并返回。此外,如果出现输入错误,我希望代码停止执行。 但是,此代码不起作用,它不会引发异常并且代码会继续执行。

如果您能指导我,将不胜感激。

class quadRoots():     
def __init__(self,coeff):
    self.A = coeff[0]/coeff[0]
    self.B = coeff[1]/coeff[0]
    self.C = coeff[2]/coeff[0]
    self.Z = 0
    self.R_1 = 0
    self.R_2 = 0
    self.coeff = len(coeff)

    try:
        self.coeff == 3
    except:
        print("Input size is not valid")
    
    
def roots(self):
    import cmath
    self.Z = cmath.sqrt((self.B**2)/4 - (self.C))
    
    self.R_1 = ((-(self.B)/2) + self.Z)
    self.R_2 = ((-(self.B)/2) - self.Z)
    return [self.R_1,self.R_2]

def mult(self):
    return quadRoots.roots(self)[0] * quadRoots.roots(self)[1]

def sumRoots(self):
    return [complex(-(self.B))]

def prodRoots(self):
    return [complex(self.C)]

quadroots([1,-9,14,15]).roots()

    try:
        self.coeff == 3
    except:
        print("Input size is not valid")

Try-Except 链不是这样工作的。它在出现错误时起作用。但是在这里,没有错误。我建议你使用 assert self.coeff == 3, "Input size is not valid"。相反,如果 self.coeff 不等于 3.

,它会引发错误并退出程序

那么整个try except链可以用一行代替。 assert self.coeff == 3, "Input size is not valid"