felangel/bloc

refactor: stop losing the original stack trace from dart 2.16

已關閉

#2,995 建立於 2021年11月21日

 (5 則留言) (1 個反應) (1 位負責人)Dart (3,419 個分叉)batch import
examplegood first issuerefactor

倉庫指標

星標
 (12,452 顆星)
PR 合併指標
 (PR 指標待抓取)

描述

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

貢獻者指南