我很难搞清楚这一点,它是关于在Python 2.7中引发异常时可以做的错误:
try:
raise [1, 2, 3, 4]
except Exception as ex:
print ex
Run Code Online (Sandbox Code Playgroud)
这里的消息是"异常必须是旧式类或派生自BaseException,而不是列表" - 这部分没问题,但当我将其更改为元组时,我感到困惑:
try:
raise (1, 2, 3, 4)
except Exception as ex:
print ex
Run Code Online (Sandbox Code Playgroud)
这里的消息是"异常必须是旧式类或派生自BaseException,而不是int" - 为什么它被解释为引发int,而不是元组?
Futhermore:
try:
raise (Exception, 'a message')
except Exception as ex:
print ex
Run Code Online (Sandbox Code Playgroud)
在这里,我们实际上提出了一个异常(与之前的示例相比,我们提出了一个int的一致行为) - 我简单地认为这只是另一种方式:
try:
raise Exception, 'a message'
except Exception as ex:
print ex
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,"消息"正被传递给Exceptions ctor(如docs.python.org上所述)
有人可以解释第二和第三种情况,并可能指出我在解释器中编写代码吗?