felangel/bloc

refactor: stop losing the original stack trace from dart 2.16

Chiusa

#2995 aperta il 21 nov 2021

 (5 commenti) (1 reazione) (1 assegnatario)Dart (3419 fork)batch import
examplegood first issuerefactor

Metriche repository

Star
 (12.452 stelle)
Metriche merge PR
 (Merge medio 2g 22h) (5 PR mergiate in 30 g)

Descrizione

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) {

Guida contributor