7

私の仕事では、いくつかのC#プロジェクトを維持する必要があります。元の開発者はもういません。最近、私は次のような状況で主に見られる奇妙なコードに気づきました。

try
{
    //some Code
}
catch
{
    0.ToString();
}

何の0.ToString()ために?ほとんどのコードはストレスの下で書かれているので、2つの可能性を考えることができます。

  • これは(のような)プレースホルダー//TODOであり、どこで修正する必要があるかを検索することができます。
  • 空のcatch句をコンパイルするときの警告を回避するためです。

その中に他のユースケースや意味はありますか?これは良い/悪いコーディングスタイルですか、それとも実践ですか?この命令は何もしないので、パフォーマンスにわずかな影響がありますか、それともコンパイラーはそれを削除するだけですか?のようなことをするためのより良い方法はどれですか

4

2 に答える 2

2

コメントが示唆しているように、コードサンプルには1つの奇妙なものと1つの悪いものが含まれています。The

0.ToString();

デバッガーがブレークポイントを配置できるコード行があるように、ほぼ間違いなくです。これは、私がこの目的で使用しているのを見た奇妙な線の1つです。この行は、デバッグセッション後に意図せずにコミットされた可能性があります。

それとは別に、空のcatchブロックがありますが、これは一般的にはお勧めできません。Ryan Gatesがその答えを教えてくれるので、その点については詳しく説明しません。しかし皮肉なことに、適切なcatchブロックがあれば、ブレークポイントを配置するコード行があります。

于 2013-02-13T01:50:14.817 に答える
1

いいえ、これを行うための別のユースケースや賢明な理由はありません。これは悪いコーディング慣行です。コードは、処理できない例外をキャッチしてはなりません。

前進するための最良の道はそれを取り除くことです。例外がスローされた場合は、そのユースケースを理解する必要があります。そうして初めて、適切なチェックや特定の例外処理コードを追加できます。

問題のコードは、健康に有害な例外を飲み込んだ例です。

于 2013-02-12T14:51:06.727 に答える