有没有办法在.NET中的一个catch块中捕获两个不同的异常?在一个catch块中执行两个不同的异常
我想的有点像
try {}
catch(OverflowException ex1, FormatException ex2)
{
}
我知道我可以使用函数来重用我的catch块冗余的逻辑,但我还是好奇,是否存在这样的速记方法。
有没有办法在.NET中的一个catch块中捕获两个不同的异常?在一个catch块中执行两个不同的异常
我想的有点像
try {}
catch(OverflowException ex1, FormatException ex2)
{
}
我知道我可以使用函数来重用我的catch块冗余的逻辑,但我还是好奇,是否存在这样的速记方法。
没有速记方法存在。从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
有你追不上的异常,并使用该理由吗?
据我所知,这是不可能的。
你可以尝试
try {}
catch(Exception ex)
{
if (ex is OverflowException)
{
//do this
}
else if(ex is FormatException)
{
//do this
}
}
不要忘记别人{throw; } – Josh 2010-11-03 05:29:29
我想你的意思是说'if(ex是OverflowException || ex是FormatException)',因为一个结构已经存在来处理这种情况,即多个catch块。 – 2010-11-03 05:34:59
捕获泛型异常类型时,代码分析工具会一致。没有真正的原因。我只想知道这样的事情是否存在。 – Jonn 2010-11-03 07:42:41