Merge pull request #138 from Cysharp/hotfix/ContinueOnErrorCallingOnNext

Continue to subscribe if an exception is raised when calling onNext
master
Yoshifumi Kawai 2020-08-25 07:11:43 +09:00 committed by GitHub
commit 7eac5d8ba8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 32 additions and 4 deletions

View File

@ -194,9 +194,16 @@ namespace Cysharp.Threading.Tasks.Linq
try try
{ {
while (await e.MoveNextAsync()) while (await e.MoveNextAsync())
{
try
{ {
onNext(e.Current); onNext(e.Current);
} }
catch (Exception ex)
{
UniTaskScheduler.PublishUnobservedTaskException(ex);
}
}
onCompleted(); onCompleted();
} }
catch (Exception ex) catch (Exception ex)
@ -226,9 +233,16 @@ namespace Cysharp.Threading.Tasks.Linq
try try
{ {
while (await e.MoveNextAsync()) while (await e.MoveNextAsync())
{
try
{ {
onNext(e.Current).Forget(); onNext(e.Current).Forget();
} }
catch (Exception ex)
{
UniTaskScheduler.PublishUnobservedTaskException(ex);
}
}
onCompleted(); onCompleted();
} }
catch (Exception ex) catch (Exception ex)
@ -258,9 +272,16 @@ namespace Cysharp.Threading.Tasks.Linq
try try
{ {
while (await e.MoveNextAsync()) while (await e.MoveNextAsync())
{
try
{ {
onNext(e.Current, cancellationToken).Forget(); onNext(e.Current, cancellationToken).Forget();
} }
catch (Exception ex)
{
UniTaskScheduler.PublishUnobservedTaskException(ex);
}
}
onCompleted(); onCompleted();
} }
catch (Exception ex) catch (Exception ex)
@ -290,9 +311,16 @@ namespace Cysharp.Threading.Tasks.Linq
try try
{ {
while (await e.MoveNextAsync()) while (await e.MoveNextAsync())
{
try
{ {
observer.OnNext(e.Current); observer.OnNext(e.Current);
} }
catch (Exception ex)
{
UniTaskScheduler.PublishUnobservedTaskException(ex);
}
}
observer.OnCompleted(); observer.OnCompleted();
} }
catch (Exception ex) catch (Exception ex)