【问题标题】:IF and ELSE Exception in Python3Python3 中的 IF 和 ELSE 异常
【发布时间】: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 都给我两个例外 NameErrorSyntaxError,如果我给 add(a) 它给我 NameError 作为例外。但是except 没有发现错误。

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

【问题讨论】:

  • NameError 不是在if..else 中提出的,而是在add(a) 中提出的,它在main 函数中。您无法在被调用函数中捕获调用函数中引发的异常。
  • a定义为某物,然后使用它。

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


【解决方案1】:

据我了解,我认为您可以这样尝试。

except NameError as e :
      print "Name error occured"
      print("Error! {}".format(e))
except SyntaxError as f:
      print "Syntax error occurred"
      print("Error! {}".format(f))

【讨论】:

    【解决方案2】:

    好的,给我-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()
    

    【讨论】:

      猜你喜欢
      • 2022-06-10
      • 1970-01-01
      • 1970-01-01
      • 2022-07-22
      • 2018-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-01
      相关资源
      最近更新 更多