私は基本的にReactiveCommand
です。非同期的なウィザードはありません。ちょうど平凡な旧いReactiveCommand.Create()
です。私はSubscribe()
例外ハンドラをとるが、例外ハンドラでブレークポイントにヒットすることはありません(私はこれを期待していませんでした)。私はThrownErrors
を購読し、決してその例外ハンドラの中のブレークポイントを打つことはありません(私はこれを期待しています)。ReactiveCommandの例外をキャッチするには?
ここではサンプルコードです:
var myCommand = ReactiveCommand.Create();
// this does not seem to work
myCommand.Subscribe(
_ => { throw new Exception("oops"); },
ex => {
Console.WriteLine(ex.Mesage);
Debugger.Break();
});
//this does not seem to work either
myCommand.ThrownExceptions.Subscribe(
ex => {
Console.WriteLine(ex.Mesage);
Debugger.Break();
});
私は私の宿題をやったと話題に質問と回答を確認しました。
How to catch exception from ReactiveCommand?
私もメールリストをチェックし、発見したが、この:
var myCommand = ReactiveCommand.CreateAsyncObservable(_ => this.Throw());
myCommand.Subscribe(
_ => { Console.WriteLine("How did we get here?"); },
// this is not expected to work
ex => {
Console.WriteLine(ex.Message);
Debugger.Break();
});
// however, I sort of expect this to work
myCommand.ThrownExceptions.Subscribe(
ex => {
Console.WriteLine(ex.Message);
Debugger.Break();
});
[...]
private IObservable<object> Throw()
{
Debugger.Break();
throw new Exception("oops");
}
:
https://groups.google.com/forum/#!topic/reactivexaml/Dkc-cSesKPY
は、だから私はいくつかの非同期溶液に、これを変更することを決めました
まだ、私は決して私のブレークポイントを打つことはありませんでしたが、Throw()
メソッド。 :(
何を私が間違っているのはどのようにここに例外をキャッチすることになっています
編集:私は内から例外をスローするとき、私は、しかし、例外ハンドラのブレークポイントにヒットしない
?変更し、観察、この
private IObservable<object> Throw()
{
Debugger.Break();
return Task.Factory.StartNew(() =>
{
throw new Exception("oops");
return new object();
}).ToObservable();
}
のような質問:「私はメソッド内から例外を処理できていない観測可能?」
正直、ありがとうございます。 –