【发布时间】:2014-11-04 06:03:16
【问题描述】:
我正在尝试捕获两个布尔值的异常(分别用于 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 和 else 都给我两个例外 NameError 和 SyntaxError,如果我给 add(a) 它给我 NameError 作为例外。但是except 没有发现错误。
我应该如何分别捕获它们的异常?
【问题讨论】:
-
NameError不是在if..else中提出的,而是在add(a)中提出的,它在main函数中。您无法在被调用函数中捕获调用函数中引发的异常。 -
将
a定义为某物,然后使用它。
标签: python python-3.x exception-handling