felangel/bloc

refactor: stop losing the original stack trace from dart 2.16

Fermée

#2 995 ouverte le 21 nov. 2021

 (5 commentaires) (1 réaction) (1 personne assignée)Dart (3 419 forks)batch import
examplegood first issuerefactor

Métriques du dépôt

Stars
 (12 452 étoiles)
Métriques de merge PR
 (Merge moyen 2j 22h) (5 PRs mergées en 30 j)

Description

You must stop losing the original source stack trace like this (just for example):

https://github.com/felangel/bloc/blob/a3a9b2dba6546480d4ea26931ed024f274b9a7a9/examples/flutter_firebase_login/packages/authentication_repository/lib/src/authentication_repository.dart#L206-L210

it's big trouble, to read exceptions without source stacktraces, especially in crashlytics or sentry like logs

from dart 2.16 you must use Error.throwWithStackTrace like this:

//@dart=2.16

...

} on FirebaseAuthException catch (e, stackTrace) {
  Error.throwWithStackTrace(
    SignUpWithEmailAndPasswordFailure.fromCode(e.code),
    stackTrace,
  );
}

also, instead:

} catch (_) {

you must write:

} on Object {

or:

} on Object catch (error, stackTrace) {

Guide contributeur