0

私は既存の大きなプロジェクトに取り組み始めたばかりです。その一部には、レガシー コードが含まれています。
致命的なエラーまたは状況が発生した場合にサーバーを警告して再起動するコンポーネント (同じプロセスで実行される) を作成するように依頼されました。

たとえば、OutOfMemoryException がスローされた場合は、クライアントに警告してからサーバーを再起動する必要があります。問題は、既存の Try-catch ブロックをすべて検索し、編集して新しいコードを catch ブロックに追加するのは難しく、時間がかかることです。それ以上に、新しいプログラマーは新しい try-catch ブロックを追加し、OutOfMemoryException がキャッチされた場合にアラートを出すのを忘れる可能性があります。

既存および将来のすべての Try-catch ブロックを見つけて編集 (および場合によっては追加) することなく、OutOfMemoryException (および同様の例外) を監視/リッスンする方法について何か考えはありますか?

私は.Net 4を使用しています。

編集:

  1. OutOfMemoryException は単なる例です。
  2. OutOfMemoryException をキャッチし、ログにメッセージを出力して何もしないレガシー コードが存在する可能性があります。
4

3 に答える 3

5

OutOfMemoryExceptionこれがまさに、キャッチしようとせずに .. を修正する必要がある理由です。いつでもどこからでも投げることができます。

その上..それはメモリ不足の例外です..プロセスがそれを処理するのに十分なメモリを持っているという保証はありますか? あなたはそうしない。

于 2013-08-04T11:04:50.393 に答える
1

【コメントラッパー】

この投稿を見て、自分が何をしているかを再考する必要があります

OutOfMemoryExceptionプログラムが「メモリ不足」であることを常に意味するわけではありません(Windowsインターンでさえ)多くのlib'sがこのexを使用して他の問題を示しています。たとえば、Image.Load(...)関数はそのexをスローできます...しかしこれは、利用可能なメモリが不足していることを意味するだけではありません...もっと多くの可能性があります...しかし、それでも検討する必要があります

1 つの方法は、使用Application classできる From WPF を使用することです。AppDomain.CurrentDomain.UnhandledExceptionプログラムレイヤーでthis.Dispatcher.UnhandledExceptionイベントを処理できるようにするイベント。ハンドラをアタッチすると、どの例外が Windows によって「処理」されるべきか (クラッシュ)、そのイベントハンドラで IS が処理される (e.Handled を設定することにより) と考えることができます。

于 2013-08-04T12:46:03.753 に答える