raise Exception, "foo" 和 raise Exception("foo") 有什么区别?

16

标题已经很明显了 - 以下两者有什么不同:

raise Exception, "foo"

并且

raise Exception("foo")

它是否完全做同样的事情,只是语法不同?

我正在使用Python 2.x,但我想听听Python 3.x中的任何区别。


当你尝试过后,你观察到了什么? - S.Lott
@bradley.ayers:好的。那么问题是什么? - S.Lott
6
我不认为因为我看不出任何明显的区别,就意味着没有区别。我认为我的问题很清楚,你不理解哪个部分? - bradley.ayers
2
也许在ABC://google.com和abc://google.com之间没有区别,两者都可以正常工作,但前者根据http://www.ietf.org/rfc/rfc2396.txt(第3.1节)是不正确的。然而请注意,它建议程序应将它们视为等效。从这个意义上说,它们似乎是相同的,但实际上存在差异,一个违反了RFC,而另一个没有。 - bradley.ayers
2
你应该能够看到已经有人回答了这个问题。我已经接受了那个答案,所以通过阅读那个答案,你将能够看到我认为什么是一个令人满意的答案。 - bradley.ayers
显示剩余4条评论
1个回答

24

在Python2中,两者是等价的。但在Python3中,不再支持raise Exception, "foo"语法。


值得一提的是,raise Exception, ('foo', 'bar') 等同于 raise Exception('foo', 'bar') - bradley.ayers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接