繁体   English   中英

Python 中是否有内置(或第 3 方)函数来获取上下文中捕获的异常?

[英]Is there a buildin(or 3rd party) function in Python to get the exception caught in context?

Python中是否有一个函数,例如get_exception,所以我可以这样做:

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

我知道在 Python 3 中,我应该使用except BaseException as ex:来完成任务。 我只是想知道是否有一个函数可以做到这一点。

except BaseException as e也适用于 Python 2。

如果出于某种原因你真的想使用一个函数, sys.exc_info()将返回一个元组,它的第二个元素是异常对象。 (第一个元素是异常类型,第三个元素是回溯。)

except块可以接收一个附加部分,如下所示:

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

一些库(包括内置库)提供了特定的Exception类型,可用于根据发现的错误类型做出更好的反应。 你可以有很多的事实结合这except一个块try块,你可以做一个非常故障安全应用程序。 复杂的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:使用的变量不存在
  • ArithmeticError:一般数学错误
  • 例外:任何类型的错误,都可以用于简单的except s 或仅用于“其他一切”

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM