エラーをキャッチすることは推奨されません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;
}