我有一個很難搞清楚這一個,它是關於可在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