我试图捕获两个布尔值的异常(对于if和else分别)。
这就是我正在做的事情:
from math import *
from decimal import Decimal
def add(self, *args):
try:
if all(isinstance(n, int) for n in args):
print(sum(int(n) for n in args))
else:
print(fsum(Decimal(n) for n in args))
except (NameError, SyntaxError) as e:
print("Error! {}".format(e))
def main():
add(a)
if __name__ == '__main__': main()
if if和else给了我两个例外NameError
和SyntaxError
,如果我给add(a)
它给我NameError
作为例外。但是except
没有发现错误。
我应该如何分别捕获它们的异常?
答案 0 :(得分:2)
根据我的理解,我认为你可以这样试试。
except NameError as e :
print "Name error occured"
print("Error! {}".format(e))
except SyntaxError as f:
print "Syntax error occurred"
print("Error! {}".format(f))
答案 1 :(得分:1)
好的,给我-1的人,只是为了让你知道这是一个诚实的错误,我是python的新手。把它放在一边。
所以只需要知道SyntaxError
在编译时抛出,这在运行时无法捕获 - >> [SyntaxError not excepting in Python 3说
所以我想通了,感谢@thefourtheye
from math import *
from decimal import Decimal
def add(*args):
if all(isinstance(n, int) for n in args):
print(sum(int(n) for n in args))
else:
print(fsum(Decimal(n) for n in args))
def main():
try:
add(dfvdv)
except NameError:
print("Error!")
if __name__ == '__main__': main()