有没有办法捕获两个不同的异常并在.NET中的一个catch块中处理它们?
我在考虑像
这样的东西try {}
catch(OverflowException ex1, FormatException ex2)
{
}
我知道我可以使用函数在我的catch块中重用冗余逻辑,但我仍然很好奇是否存在一个简写方法。
答案 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
}
}