닷넷 Observable 안전하게 구독하기

public static IDisposable SubscribeNextSafe<T>(this IObservable<T> source, Action<T> onNext)
{
    return SubscribeNextSafeInternal(source, onNext, OnNopException, OnNopCompleted);
}
private static IDisposable SubscribeNextSafeInternal<T>(this IObservable<T> source, Action<T> onNext, Action<Exception> onException, Action onComplete)
{
    return source.Subscribe(x =>
    {
        try
        {
            onNext.Invoke(x);
        }
        catch (Exception e)
        {
            onException.Invoke(e);
            Logger.Error(e, $"");
        }
    }, onException, onComplete);
}

Last updated