私は、リアルタイムのストリーミングデータを使用するシステムを構築しているため、他のすべてがアイドル状態のときに発生する可能性のあるエラーを処理する必要があります。私が使用しているAPIは、エラーを "error"という名前のメソッドを介してプログラムに戻しますが、例外が添付されています。このメソッドは、エラーをスローする可能性がありますが、それは問題です。なぜなら、私のプログラム全体をtry-catchブロック内に置くのは良い考えではありません。
これを回避するために、プログラムのメイン部分でイベントを発生させるイベントハンドラを設定します。このイベントハンドラは、その時点でスローされたエラーを処理できます。例えば
:
メインクラスでは:(APIからエラーを受け取り、クラスで)
private void Error(object sender, EventArgs e) {
Exception ex = sender as Exception;
Console.WriteLine("Error: " + ex); // Or whatever you want to do with the exception
// You could even add this if you want to then use the try -catch sequence (which
// makes the exception easier to parse and also enables you to stop the program
// with unhandled exceptions if it's something catastrophic:
try {
throw ex;
} catch (put.your.exception.detail.here) {
// do stuff
} finally {
// do other stuff
}
}
:
class Foo {
public event EventHandler ThrowError;
protected virtual void OnError(Object src, EventArgs e) {
if (ThrowError != null) {
ThrowError(src, e);
}
}
private virtual void error(Exception e) {
OnError(e, EventArgs.Empty);
}
}
@Henk Holterman:この質問は本当に悪いですか、あなたはそれに投票しますか?代替案を探して悪いですか? – jams
@Henk。私は同意します...誰もが理論、戦略、またはスタックのオーバーフローに関するパフォーマンスの質問をすることができるという全体的な問題があります。私はプログラマーの方ではなく、より良いところに来てくれるように尋ねる傾向があります。 – KingOfHypocrites
私は、この質問では下院議決が完全に公平だとは思わない。それは完全に正当な質問です。 –