一度に複数の例外をキャッチしますか? 質問する

一度に複数の例外をキャッチしますか? 質問する

エラーをキャッチすることは推奨されませんSystem.Exception。代わりに、「既知の」例外のみをキャッチする必要があります。

これにより、次のような不要な繰り返しコードが発生することがあります。

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

両方の例外をキャッチして一度だけ設定する方法はありますかWebId = Guid.Empty?

与えられた例は、GUIDしかし、オブジェクトを複数回変更し、操作の 1 つが予想どおりに失敗した場合にオブジェクトを「リセット」したいコードを想像してください。ただし、予期しない例外が発生した場合は、さらに上位にスローする必要があります。

ベストアンサー1

キャッチSystem.Exceptionしてスイッチオンタイプ

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

おすすめ記事