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 合并指标
 (平均合并 2天 22小时) (30 天内合并 5 个 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) {

贡献者指南