Как обрабатывать исключения глобально в ReactiveUI 9.3.5? - PullRequest
0 голосов
/ 03 декабря 2018

Я недавно обновил до 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 для генерации и обработки ошибок в глобальном масштабе, но это устарело.

...