Python中是否有一个buildin(或第三方)函数来获取上下文中捕获的异常?

2024-04-23 07:45:41 发布

您现在位置:Python中文网/ 问答频道 /正文

Python中是否有函数,例如get\u exception,所以我可以这样做:

try:
    can_raise_anything()
except:
    ex = *get_exception()*
    print('caught something: ' + str(ex))

我知道在python3中,我应该使用except BaseException as ex:来完成任务。我只是好奇看看有没有一个函数可以做到这一点。你知道吗


Tags: 函数getexceptioncansomethingpython3exraise
2条回答

except块可以接收如下所示的附加部分:

try:
    stuff()
except Exception as e:
    print e

一些库(包括内置库)提供了特定的Exception类型,根据所发现的错误类型,可以使用这些类型做出更好的反应。再加上一个try块可以有尽可能多的except块,您就可以制作一个非常安全的应用程序。复合try-except块示例:

try:
    result = a / b
except TypeError as e:
    print "Woops! a and b must be numbers!"
    result = int(a) / int(b)
    print e
except NameError as e:
    print "A variable used doesn't exist!"
    print e
except ArithmeticError as e:
    print "It seems you've gone past infinity, under atomicity or divided by zero!"
    print e
except Exception as e:
    print "Something REALLY unexpected happened!"
    print e

示例中使用的内置异常:

  • TypeError:当变量的类型是意外的(例如添加字符串和数字)
  • NameError:使用的变量不存在
  • 算术错误:一般数学错误
  • 例外:任何类型的错误,都可以用于简单的except或仅用于“其他所有错误”

python2.x的内置异常列表及其描述可以在http://docs.python.org/2/library/exceptions.html中找到。 注意:通常自定义库会有注释来描述它们引发的自定义异常。你知道吗

except BaseException as e也适用于python2。sys.exc_info()可以提供有关异常的一些信息(类型、关联值和回溯),但不能提供实际的异常对象。Guido不会放入函数来执行此操作,因为except BaseException as e已经存在。你知道吗

相关问题 更多 >