Comments (1)
This is the best workaround I've come up with so far. It's still VERY non ideal. Biggest problem is the stack trace is still getting lost pretty badly.
class BetterParallelWaitError extends ParallelWaitError {
BetterParallelWaitError._(super.values, super.errors);
@override
String toString() {
return 'ParallelWaitError: parallel wait finished with '
'1 or more errors.\n'
'Errors:\n'
'$errors';
}
}
extension ParallelWaitErrorExtension on Object {
// Inject this function into your crash reporter or into `onError`.
Object get transformParallelError {
if (this is ParallelWaitError) {
final ParallelWaitError error = this as ParallelWaitError;
return BetterParallelWaitError._(error.values, error.errors);
}
return this;
}
}
final (int someInt, double someDouble, String someString) =
await (
() async { return 0; }(),
() async { return null!; }(),
() async { return 'foo'; }(),
).wait.onError((error, stackTrace) => throw error!.transformParallelError);
======== Exception caught by Flutter framework =====================================================
The following BetterParallelWaitError was thrown:
ParallelWaitError: parallel wait finished with 1 or more errors.
Errors:
(null, Null check operator used on a null value, null)
When the exception was thrown, this was the stack:
#0 SubscriptionBloc.notifier.<anonymous closure>.<anonymous closure> (package:dribble_game_mobile/clients/dribble_purchases.dart:116:43)
<asynchronous suspension>
(elided 14 frames from dart:async)
====================================================================================================
from async.
Related Issues (20)
- Change the default of `propagateCancel` argument in CancelableOperation.then HOT 2
- Reset method for AsyncMemoizer HOT 1
- Make it easier to safely hold a reference that can cancel an operation without holding the whole operation HOT 1
- Clarify `StreamQueue.next` will fail just after `hasNext` in API document.
- Consider to make second invocation of `streamQueue.hasNext` be postponed concluding the result until the first invocation of `q.next` , unless the stream is closed. HOT 6
- Deprecate StreamQueue.hasNext and StreamQueue.next
- Future.wait() but with Records HOT 4
- Bad State error while trying to reject a StreamQueueTransaction
- Dart 3 incompatibilty: `DelegatingStream<T> extends StreamView` but `StreamView` is `base class` HOT 5
- Add `whereNotNull` for `Stream`
- CancelableOperation value is not propagating errors, so they cannot be catched and app is crashing HOT 3
- There should be cancellable versions of Stream.firstWhere etc.
- Migrate the Result type to sealed classes HOT 4
- Async Cache is caching exceptions HOT 5
- AsyncMemoizer is caching exceptions HOT 2
- Add an API wrapping runZonedGuarded that surfaces the first error HOT 4
- Clarify `CancelableOperation` docs HOT 4
- Inconsistent behavior of `Stream.listen` on broadcast streams HOT 1
- [Proposal] Add a CountDownLatch implementation
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from async.