c# - Java catch 複数 順番 - 複数の例外を一度にキャッチしたい

C# try-catch throw / c# / .net / exception / exception-handling

System.Exception を単にキャッチすることはお勧めしません。代わりに、「既知の」例外のみをキャッチする必要があります。

さて、これは時に、不必要な繰り返しのコードを引き起こすことがあります。

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

Community



Answer #1

完全を期すために、.NET 4.0以降、コードは次のように書き直すことができます

Guid.TryParse(queryString["web"], out WebId);

C#7以降、別の行に変数を導入することを回避できます。

Guid.TryParse(queryString["web"], out Guid webId);

また、戻り値のタプルを解析するためのメソッドを作成することもできますが、これはバージョン4.6の時点ではまだ.NET Frameworkでは利用できません。

(bool success, Guid result) TryParseGuid(string input) =>
    (Guid.TryParse(input, out Guid result), result);

そして、このように使います。

WebId = TryParseGuid(queryString["web"]).result;
//または
var tuple = TryParseGuid(queryString["web"]);
WebId = tuple.success ? tuple.result : DefaultWebId;