一尘不染

一次捕获多个异常?

c#

不建议简单地抓住System.Exception。相反,仅应捕获“已知”异常。

现在,这有时会导致不必要的重复代码,例如:

try
{
    WebId = new Guid(queryString["web"]);
}
catch (FormatException)
{
    WebId = Guid.Empty;
}
catch (OverflowException)
{
    WebId = Guid.Empty;
}

我想知道:有没有一种方法可以捕获两个异常并且只WebId = Guid.Empty调用一次电话?

给定的示例非常简单,因为它只是一个GUID。但是,请想象一下在代码中多次修改对象的情况,并且如果其中一种操作以预期的方式失败,则您想“重置”
object。但是,如果有意外的例外,我仍然想将其提高。


阅读 217

收藏
2020-05-19

共1个答案

一尘不染

捕捉System.Exception并打开类型

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

    throw;
}
2020-05-19