Python3中的IF和ELSE异常

时间:2014-11-04 06:03:17

标签: python python-3.x exception-handling

我试图捕获两个布尔值的异常(对于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给了我两个例外NameErrorSyntaxError,如果我给add(a)它给我NameError作为例外。但是except没有发现错误。

我应该如何分别捕获它们的异常?

2 个答案:

答案 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()