C#更优雅的方法来检查异常是否在指定的异常列表中?

时间:2015-04-09 14:30:09

标签: c# exception-handling

我需要检查异常是否在指定的异常列表中,目前我的代码如下:

catch (Exception ex) {
  if ( (ex is Exception1) || (ex is Exception2) || (ex is Exception3) || (ex is Exception4) || (ex is Exception5) ) { 
    //do something; 
  }
}

正如您所看到的,语法不是很优雅。有没有更好/更清晰的方法在C#中编写这种类型的表达式?

编辑 - 我正在寻找一些更好的构建语法来将异常视为类型,所以也许我可以构建这些异常的列表,并且只是使用像列表对象包含此ex的东西。无论如何,我认为我现在可以忍受当前的代码。

2 个答案:

答案 0 :(得分:1)

public void test()
{
    try
    {
       // do something something
       return;
    }
    catch (Exception1) {}
    catch (Exception2) {}
    catch (Exception){
       return;
    }

    //do something; 
}

不是很漂亮'但它的工作原理..如果遇到任何异常1或异常2,则//do something将执行。如果遇到另一个异常(由通用Exception表示),则该方法将返回并且它将不执行任何操作(它将不执行//do something)。

答案 1 :(得分:0)

我认为你不应该提出这个解决方案。捕获块中的每个异常更好,如下所示:

catch (Exception1 ex) {
}
catch (Exception2 ex) {
}