从catch中排除异常类型的最佳方法是什么?

Chr*_*ris 1 c# exception

从catch中排除异常类型的最佳方法是什么?你可能不知道会有什么类型的异常进入,因此你的一个catch可能是泛型catch(Exception ex),你可以轻松检查该异常的类型,如果它与你要排除的异常匹配,那么抛出它备份,但我猜这是非常低效的.有没有更好的方法呢?

cdh*_*wie 6

最直接的方法是为您不想捕获的异常类型设置一个块:

try {
    // ....
} catch (DoNotWantToCatchException) {
    throw;
} catch (Exception ex) {
    // Handle exception
}
Run Code Online (Sandbox Code Playgroud)

没有更简单的方法来完成您的要求.

  • 从 C# 6.0 开始,现在可以使用“with”子句有条件地排除: ```try { } catch (Exception ex) when (!(ex is ExcludedException)) { /* do stuff */ }``` (2认同)
  • @Kelmar,你应该添加这个作为答案 (2认同)