我有一個基本的ReactiveCommand
。沒有異步巫術,只是普通的舊版本ReactiveCommand.Create()
。 I 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?
我已經檢查了郵件列表的歡迎,並發現這一點: https://groups.google.com/forum/#!topic/reactivexaml/Dkc-cSesKPY
所以我決定改變這一些異步解決方案:
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");
}
然而,我從來沒有打過任何我的斷點,除了在Throw()
方法。 ?:(
我在做什麼錯了我怎麼在這裏捕獲異常
編輯:
我這樣做,但是,命中異常處理程序斷點,當我拋出異常的內可觀察到,像這樣
private IObservable<object> Throw()
{
Debugger.Break();
return Task.Factory.StartNew(() =>
{
throw new Exception("oops");
return new object();
}).ToObservable();
}
問題修改爲:「我是能夠從方法內處理異常,而不是觀察到的?」
整潔,謝謝你的信息。 –