リアルタイム ストリーミング データを使用するシステムを構築しているため、他のすべてがほぼアイドル状態のときに発生する可能性のあるエラーを処理する必要があります。私が使用している API は、"error" という名前のメソッドを介してエラーをプログラムに戻し、例外を添付しています。このメソッドはエラーをスローする可能性がありますが、それは問題です。なぜなら、プログラム全体を完全に try-catch ブロック内に置くことがどのように良い考えなのかがわからないからです。
そこで、この問題を回避するために、プログラムの主要部分でイベントを発生させるイベント ハンドラーを設定します。これにより、その時点でスローされたエラーを処理できます。
例えば:
メインクラスでは:
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
}
}
(API からエラーを受け取るクラス内):
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);
}
}