【发布时间】:2012-06-26 16:12:34
【问题描述】:
是否可以在同一个catch 块中捕获多个异常?
try
{ }
catch(XamlException s | ArgumentException a)
{ }
【问题讨论】:
-
该语法不是 C# 标准的一部分,因此您最终会遇到编译器错误 :)
-
虽然这可能不是您向我们展示的实际代码,但
ArgumentException派生自SystemException,因此catch (SystemException)足以捕获这两种类型。当然,如果您想检查不正确的参数,您仍然需要强制转换,但如果您需要那么多信息,那么单独的catch块可能更有意义。最后,无论如何,你真的不应该抓到ArgumentException;这意味着你做错了什么,所以只要解决问题而不是忽视它。 -
blogs.msdn.com/b/toub/archive/2004/03/05/84698.aspx,用于处理过滤器和多个异常。即使 VB.NET/F# 允许这样的事情,这也是一种技巧,因为 CLR 不直接支持它。
标签: c# exception exception-handling