【发布时间】:2015-12-10 17:47:03
【问题描述】:
假设我需要运行 methodA,methodA 会抛出 FormatException。
如果我写这个块:
try
{
methodA();
}
catch (Exception ex)
{
methodB();
}
catch (FormatException ex)
{
methodC();
}
它是否会运行 methodC,知道 FormatException 也是一个异常,因此会进入 methodB 的 catchblock。
还是这样写比较好:
try
{
methodA();
}
catch (Exception ex)
{
if(ex is FormatException)
{
methodC();
} else
{
methodB();
}
}
【问题讨论】:
-
捕捉异常时的顺序很重要。
-
你的第一个例子更好,但你的 catch 块的顺序应该总是从最具体到最不具体。因此,最后一个 catch 块应该捕获 Exception。
-
您建议的第二种方法最好。 Here's an example 的类似问题。
-
@TestWell 如果您对每种类型的异常执行不同的操作,则不会。
-
@TestWell 完全没有必要捕获一个泛型异常然后测试类型。
标签: c# .net exception exception-handling try-catch