如何一次性处理多种类型的异常

虽然我们可以简单地捕获System.Exception处理所有的异常,但我们并不鼓励这样做,通常我们只应该捕获我们需要处理的异常。

但是有的时候这会导致重复的代码,例如:

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

我们有没有办法一次性捕获所有要捕获的异常,只调用一次`WebId = Guid.Empty呢?

捕获System.Exception,再根据异常的类型进行不同的处理是一种方法:

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

    throw;
}