小编典典

一次捕获多个异常?

c#

不鼓励简单地 catch System.Exception。相反,应该只捕获“已知”的异常。

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

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

我想知道:有没有办法捕获两个异常并且只WebId = Guid.Empty调用一次?

给定的示例相当简单,因为它只是一个GUID. 但是想象一下你多次修改一个对象的代码,如果其中一个操作预期失败,你想“重置” object. 但是,如果出现意外异常,我仍然想将其抛出更高。


阅读 132

收藏
2022-02-08

共1个答案

小编典典

捕捉System.Exception并打开类型

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

    throw;
}
2022-02-08