以下是关于这个话题前两个问题: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