我最近升级到ReactiveUI 9.3.5,该文档建议通过RxApp.DefaultExceptionHandler
全局处理错误:
// set at startup
RxApp.DefaultExceptionHandler = new GlobalErrorHandler();
public class GlobalErrorHandler : IObserver<Exception>
{
public void OnNext(Exception error)
{
Debug.Write("An error occurred");
}
public void OnError(Exception error) { }
public void OnCompleted() { }
}
当命令引发异常时,将按预期方式调用全局错误处理程序。
问题在于此后该应用仍会崩溃,并带有未处理的异常:
// this crashes the app
var command = ReactiveCommand.CreateFromTask(async () =>
{
throw new Exception();
})
.Execute()
.Subscribe(x =>
{
Debugger.Break();
});
这是预期的行为吗?在全局范围内捕获和处理异常代码的方式是什么?
以前,我使用UserError
来全局抛出和处理错误,但这已被淘汰。