我有一个很难搞清楚这一个,它是关于可在Python 2.7抛出异常时做的错误:如果第一个元素是一个异常,为什么提出一个元组?
try:
raise [1, 2, 3, 4]
except Exception as ex:
print ex
这里的消息是“异常必须是老式类或BaseException衍生,没有列出” - 这部分是确定的,但是当我将其更改为元组,我越来越糊涂:
try:
raise (1, 2, 3, 4)
except Exception as ex:
print ex
这里的消息是‘异常必须是老式类或BaseException衍生,不是int’ - 为什么它被解释为提出一个int,而不是元组?
Futhermore:
try:
raise (Exception, 'a message')
except Exception as ex:
print ex
在这里,我们实际上在上升的异常(一致的行为与之前的例子,我们在那里养一个int相比) - 我简单地认为这是只为这一个替代方式:
try:
raise Exception, 'a message'
except Exception as ex:
print ex
但在这种情况下,“消息”被传递给异常构造函数(如记录上docs.python.org)
可有人expla在第二和第三种情况下,可能指向我在解释器中负责编码的代码?
我没有意识到递归元组展开,所以我不明白为什么其他元素被忽略--PEP是我正在寻找的缺失链接。 – dahpgjgamgan 2012-03-23 13:21:21