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

C# More elegant way to check if an exception is within a list of specified exceptions?

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

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

如您所见,语法不是很优雅。在 C# 中是否有 better/cleaner 编写此类表达式的方法?

编辑 - 我一直在寻找一些更好的内置语法来将异常视为类型,所以也许我可以构建这些异常的列表,如果列表对象包含这个 ex,就使用类似的东西。不管怎样,我想我现在可以忍受现在的代码。

我认为你不应该做这个解决方案。最好在一个块中捕获每个异常,如下所示:

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

    //do something; 
}

不是很 'beautiful' 但它有效.. 如果遇到 Exception1 或 Exception2 中的任何一个,那么 //do something 将执行。如果命中另一个异常(由一般 Exception 表示),则该方法将 return 并且不会执行任何操作(它不会执行 //do something)。