From f1813a7c94690eb48ec2d08b0b1ffa475169ae89 Mon Sep 17 00:00:00 2001 From: Mayuki Sawatari Date: Mon, 24 Aug 2020 14:44:15 +0900 Subject: [PATCH] Continue to subscribe if an exception is raised when calling onNext --- .../Plugins/UniTask/Runtime/Linq/Subscribe.cs | 36 ++++++++++++++++--- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/src/UniTask/Assets/Plugins/UniTask/Runtime/Linq/Subscribe.cs b/src/UniTask/Assets/Plugins/UniTask/Runtime/Linq/Subscribe.cs index 9643b06..f92378b 100644 --- a/src/UniTask/Assets/Plugins/UniTask/Runtime/Linq/Subscribe.cs +++ b/src/UniTask/Assets/Plugins/UniTask/Runtime/Linq/Subscribe.cs @@ -195,7 +195,14 @@ namespace Cysharp.Threading.Tasks.Linq { while (await e.MoveNextAsync()) { - onNext(e.Current); + try + { + onNext(e.Current); + } + catch (Exception ex) + { + UniTaskScheduler.PublishUnobservedTaskException(ex); + } } onCompleted(); } @@ -227,7 +234,14 @@ namespace Cysharp.Threading.Tasks.Linq { while (await e.MoveNextAsync()) { - onNext(e.Current).Forget(); + try + { + onNext(e.Current).Forget(); + } + catch (Exception ex) + { + UniTaskScheduler.PublishUnobservedTaskException(ex); + } } onCompleted(); } @@ -259,7 +273,14 @@ namespace Cysharp.Threading.Tasks.Linq { while (await e.MoveNextAsync()) { - onNext(e.Current, cancellationToken).Forget(); + try + { + onNext(e.Current, cancellationToken).Forget(); + } + catch (Exception ex) + { + UniTaskScheduler.PublishUnobservedTaskException(ex); + } } onCompleted(); } @@ -291,7 +312,14 @@ namespace Cysharp.Threading.Tasks.Linq { while (await e.MoveNextAsync()) { - observer.OnNext(e.Current); + try + { + observer.OnNext(e.Current); + } + catch (Exception ex) + { + UniTaskScheduler.PublishUnobservedTaskException(ex); + } } observer.OnCompleted(); }