In Dart language, how can I create an error in a generator function while keeping it creating values?
import 'dart:math' show Random;
main() {
sum20RandomNumbers().then((sum) {
print("Sum: $sum");
});
}
Future<double> sum20RandomNumbers() async {
var randomStream = generateRandomNumbers().handleError((error) {
print('Ignore large number: ${error}');
// How can I ignore error here?
});
int count = 0;
double sum = 0;
await for (var n in randomStream) {
print(n);
sum += n;
if (++count >= 20) // sum 20 numbers at most
break;
}
return sum;
}
Stream<double> generateRandomNumbers([int seed]) async* {
final random = Random(seed);
while (true) {
final nextDouble = random.nextDouble();
if (nextDouble > 0.8) {
throw Exception('$nextDouble');
// how can I keep generating next random numbers?
}
yield nextDouble;
}
}
The above code shows the intent of sum20RandomNumbers() is to sum exactly 20 random numbers up, but it will be stopped after an Exception being thrown in generator function generateRandomNumbers(). How to keep generator function yielding values after throwing an error?