def main1(expr):
if expr(eval) raise ValueError:
raise ValueError("Not a correct expression")
main1((8+3)*(5-6)))
所以,我的参数是:(8+3(*(5-6(
然而,我故意在上面加上另一个括号,使这个中缀表达式无效。
在我的代码中,有没有一种方法可以做到这一点,它试图对其进行评估,如果它运行错误,则引发一个Value错误,声明它不是有效的输入?
您想要的是一个try-catch。
尽管说实话,没有充分的理由使用这个。引发的错误已经是语法错误,如果语法错误,则用户会期望出现这种错误。
更好的方法可能是:
def main1(expr):
try:
eval(expr)
except SyntaxError:
#logger.error("This is not a correct expression")
print("This is not a correct expression")
raise
或者,如果你已经下定决心,这应该是你想要的。
def main1(expr):
try:
eval(expr)
except SyntaxError:
raise ValueError("Not a correct expression")
main1("(8+3)*(5-6))")