试着抓.以相同的方式处理多个异常(或通过降低)

ram*_*ram 23 c# error-handling exception-handling exception

这里发布一个非常相似的问题.我正在扩大这个问题.假设你想要捕获多种类型的异常,但想以同样的方式处理它,有没有办法做一些像switch case这样的事情?

switch (case)
{
  case 1:
  case 2:

  DoSomething();
  break;
  case 3:
  DoSomethingElse()
  break;

}
Run Code Online (Sandbox Code Playgroud)

是否可以以相同的方式处理少数例外.就像是

try
{
}
catch (CustomException ce)
catch (AnotherCustomException ce)
{
  //basically do the same thing for these 2 kinds of exception
  LogException();
}
catch (SomeOtherException ex)
{
 //Do Something else
}
Run Code Online (Sandbox Code Playgroud)

Joã*_*elo 15

目前没有语言结构来实现你想要的.除非异常都来自基本异常,否则您需要考虑将公共逻辑重构为方法并从不同的异常处理程序中调用它.

或者你可以按照这个问题中的解释做:

一次捕获多个异常?

就个人而言,我倾向于选择基于方法的方法.

  • 要将数据复制到此线程:`catch(Exception ex){if(ex是FormatException || ex是OverflowException){WebId = Guid.Empty; 返回; 扔 }` (2认同)

pdr*_*pdr 8

你应该有一个BaseCustomException并捕获它.


Jac*_*wer 5

这是从另一个帖子复制的,但我将代码拉到这个线程:

捕捉System.Exception并开启类型

catch (Exception ex)            
{                
    if (ex is FormatException || ex is OverflowException)
    {
        WebId = Guid.Empty;
        return;
    }

    throw;
}
Run Code Online (Sandbox Code Playgroud)

我更喜欢在几个 catch 块中重复一个方法调用。