def main1(expr):
if expr(eval) raise ValueError:
raise ValueError("Not a correct expression")
main1((8+3)*(5-6)))
因此,我有如下参数:(8+3)*(5-6))
然而,我故意在这上面加了另一个括号,使这个中缀表达式无效。
有没有办法在我的代码中做到这一点,它试图评估它,如果它运行一个错误,引发一个值错误,声明它不是一个有效的输入?
发布于 2020-07-19 01:47:53
您要找的是一个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))")
https://stackoverflow.com/questions/62971815
复制相似问题