在一行中捕獲多個異常(塊除外)我知道我能做到:try:
# do something that may failexcept:
# do this if ANYTHING goes wrong我也可以這樣做:try:
# do something that may failexcept IDontLikeYouException:
# say pleaseexcept YouAreTooShortException:
# stand on a ladder但是,如果我想在兩個不同的例外中做同樣的事情,我現(xiàn)在能想到的最好的方法就是這樣做:try:
# do something that may failexcept IDontLikeYouException:
# say pleaseexcept YouAreBeingMeanException:
# say please我是否可以這樣做(因為在這兩個例外情況下采取的行動是say please):try:
# do something that may failexcept IDontLikeYouException, YouAreBeingMeanException:
# say please現(xiàn)在,這實際上是行不通的,因為它與以下語法匹配:try:
# do something that may failexcept Exception, e:
# say please因此,我捕捉這兩個不同的異常的努力并沒有完全實現(xiàn)。有辦法嗎?
3 回答

瀟湘沐
TA貢獻(xiàn)1816條經(jīng)驗 獲得超6個贊
例如,EXT子句可以將多個異常命名為帶括號的元組。
except (IDontLikeYouException, YouAreBeingMeanException) as e: pass
except (IDontLikeYouException, YouAreBeingMeanException), e: pass
as
.

慕勒3428872
TA貢獻(xiàn)1848條經(jīng)驗 獲得超6個贊
A
try
語句可能有多個以外子句,以指定不同異常的處理程序。最多只執(zhí)行一個處理程序。處理程序只處理相應(yīng)TRY子句中出現(xiàn)的異常,而不處理相同TRY語句的其他處理程序中出現(xiàn)的異常。EXT子句可以將多個異常命名為括號大小的元組,例如: except (RuntimeError, TypeError, NameError): pass
注意,這個元組周圍的括號是必需的,因為除了 ValueError, e:
是否用于通常編寫為 except ValueError as e:
在現(xiàn)代Python中(如下所述)。為了向后兼容,仍然支持舊的語法。這意味著 except RuntimeError, TypeError
不等于 except (RuntimeError, TypeError):
但對 except RuntimeError as
TypeError:
這不是你想要的。
添加回答
舉報
0/150
提交
取消