1. ホーム
  2. c#

[解決済み] try catch finally ブロックの中から戻るのはバッドプラクティスですか?

2022-05-26 05:31:26

質問

今朝、このようなコードに出くわしました。

try
{
    x = SomeThingDangerous();
    return x;
}
catch (Exception ex)
{
    throw new DangerousException(ex);
}
finally
{
    CleanUpDangerousStuff();
}

しかし、tryブロックの中から戻るのは、特にfinallyが付随している場合、正しいとは思えません。

私の主な問題は、最終的にそれ自身の例外をスローする場合はどうなるのでしょうか?返された変数を持っていますが、対処するための例外もあります...だから私は、try ブロック内から戻ることについて他の人がどう考えるかに興味があります。

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

いいえ、それは悪い習慣ではありません。置く return をつけると、読みやすさと保守性が向上し、コードがよりシンプルに理解できるようになります。として気にする必要はありません。 finally ブロックは実行されます。 return ステートメントに遭遇した場合に実行されます。