0

Is there a function in Python, e.g. get_exception, so I can do this:

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

I know in Python 3, I should use except BaseException as ex: to do the task. I'm just curious to see if there is a function can do that.

4

2 回答 2

2

except BaseException as e也适用于 Python 2。

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

于 2013-08-08T01:59:37.543 回答
1

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 的内置异常列表及其描述。注意:通常自定义库具有描述它们引发的自定义异常的注释。

于 2013-08-08T02:12:26.457 回答