在一个catch块中执行两个不同的异常

时间:2010-11-03 05:09:29

标签: .net exception-handling

有没有办法捕获两个不同的异常并在.NET中的一个catch块中处理它们?

我在考虑像

这样的东西
try {} 
catch(OverflowException ex1, FormatException ex2) 
{
} 

我知道我可以使用函数在我的catch块中重用冗余逻辑,但我仍然很好奇是否存在一个简写方法。

3 个答案:

答案 0 :(得分:1)

不存在速记方法。从C# 3.0 specification的§B.2.5开始,语法描述了特定的catch子句如何只有一个class-type和一个可选的identifier

try-statement:
    try   block   catch-clauses
    try   block   finally-clause
    try   block   catch-clauses   finally-clause

catch-clauses:
    specific-catch-clauses   general-catch-clauseopt
    specific-catch-clausesopt   general-catch-clause

specific-catch-clauses:
    specific-catch-clause
    specific-catch-clauses   specific-catch-clause

specific-catch-clause:
    catch   (   class-type   identifieropt   )   block

general-catch-clause:
    catch   block

你有没有理由不能捕获Exception并使用它?

答案 1 :(得分:1)

您可以从公共基础派生OverflowException和FormatException,并捕获基础。

try {} 
catch(exceptionBase ex1) 
{
} 

请参阅here了解更多有关try / catch / finally块的详细信息。

答案 2 :(得分:0)

据我所知,这是不可能的。

你可以尝试

try {} 
catch(Exception ex) 
{
if (ex is OverflowException )
{
 //do this
}
else if(ex is FormatException )
{
 //do this
}
}