1. ホーム
  2. c#

[解決済み] 複数の例外を一度にキャッチする?

2022-03-17 20:04:33

質問

を単純にキャッチすることは推奨されません。 System.Exception . その代わりに、quot;known" の例外のみを捕捉する必要があります。

さて、これは時に不必要なコードの繰り返しにつながるなど。

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

どうなんでしょうね。両方の例外をキャッチして WebId = Guid.Empty の呼び出しは一度だけですか?

与えられた例はかなり単純なものです。 GUID . しかし、あるオブジェクトを何度も変更するようなコードを想像してみてください。 object . しかし、予期せぬ例外が発生した場合は、やはりその分高く投げたい。

どのように解決するのですか?

キャッチ System.Exception を選択し、型をオンにします。

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