以下是關於這個話題前兩個問題:C#中多類型catch塊的可能語法?
我今天的工作,並認爲這可能是一個合適的語法應該這個功能曾經被添加到C#語言。任何人對此有任何意見?
e
的類型必須是列出的每種異常類型的基本類型或接口。
編輯:在這個例子中,捕捉塊處理要麼ArgumentNullException
或ArgumentOutOfRangeException
,並將異常實例中稱爲e
ArgumentException
類型的變量。它不處理除列出的兩個以外的任何其他類型的ArgumentException
。我認爲,
和as
的關聯性存在一些混淆。
編輯2:如果列出的例外所有上溯造型到的e
類型的變量,則代碼完全編譯爲MSIL沒有任何鑄模或顯式的類型檢查,使其更快(潛在顯著)比當前語法如果它不是你想要的兩個之一,則捕獲ArgumentException
後跟一個throw;
。如果你抓到Exception
並檢查兩種可能的類型來處理和重新投擲,如果它是別的東西,問題就更加明顯。
try
{
}
catch (ArgumentNullException, ArgumentOutOfRangeException as ArgumentException e)
{
}
能否downvoters說他們爲什麼downvoted這題? – Dykam 2009-10-07 20:15:58
唯一的問題是「任何人對此有任何意見?」。答案是:「是的,我們大多數人都是非常有見地的人。」要麼提出一個「真正」的問題,要麼是GTFO。 – abelenky 2009-10-14 21:49:37
[另類,功能風格](http://community.bartdesmet.net/blogs/bart/archive/2008/01/06/exception-handling-in-functional-style.aspx):好吧,還不如干淨(作爲你的和其他許多建議)**,但這是有效的。** – nawfal 2013-05-18 11:17:36