在 Crashlytics 上记录非致命错误

Posted

技术标签:

【中文标题】在 Crashlytics 上记录非致命错误【英文标题】:Log Non-fatal errors on Crashlytics 【发布时间】:2017-08-22 20:59:21 【问题描述】:

ios 上,可以使用 recordError(error) ,但显然此功能不适用于 android

我发现的唯一替代方法是使用logException(e)。 我管理我的应用程序上的错误,并且我想在返回特定错误代码时进行记录。因此,在 Crashlytics 上,我希望 errorCode 引用非致命错误。但是使用 logException(e) 方法,错误会被调用 logException(e) 的方法引用。

我该怎么做?

【问题讨论】:

你可以在这里查看我的答案***.com/a/45071033/5381331。希望对你有帮助 这么多详细的答案,但没有一个真正回答这个问题...... 【参考方案1】:

为了报告非致命问题,我会使用以下代码向log an exception 报告(请记住,您可以抛出Exception 的任何子类):

Crashlytics.logException(new Exception("My custom error message"));

【讨论】:

但是,与 iOS 的 recordError 不同,这在应用重启之前不会上传报告。 @DarkNeuron 对此有何解决方案?我想立即记录异常 @ysfcyln 我不知道:( recordError 也等待下一个应用程序启动。 Per firebase.google.com/docs/crashlytics/… “Crashlytics 可让您记录非致命异常并在您的应用下次启动时将其发送给您。”【参考方案2】:

您还可以使用 Crashlytics 以下功能来提供更多信息。

记录非致命事件:

try 
  myMethodThatThrows();
 catch (Exception e) 
  Crashlytics.logException(e);
  // handle your exception here!

添加更多信息:

Crashlytics.log(int priority, String tag, String msg);
Crashlytics.log("Higgs-Boson detected! Bailing out...");

您还可以提供一些用户信息:

void Crashlytics.setUserIdentifier(String identifier);
void Crashlytics.setUserName(String name);
void Crashlytics.setUserEmail(String email);

【讨论】:

Crashlytics.log("msg") 仅适用于作为未来可能出现异常的补充补充,否则,开发人员将无法在 Crashltyics 仪表板上找到它。【参考方案3】:

对于那些拥有从 Fabric-Crashlytics SDK 到 Firebase-Crashlytics SDK 的 migrated 的用户,记录非关键异常或已在 try-catch 块中捕获的异常的新方法是 -

FirebaseCrashlytics.getInstance().recordException(e)

要向崩溃报告添加额外的数据字段,您可以在记录异常之前进行键值对,如下所示

val crashlytics = FirebaseCrashlytics.getInstance()
crashlytics.setCustomKey("position", 1)
crashlytics.setCustomKey("marker_mode", "hidden")
crashlytics.setCustomKey("direction_shown", true)

要添加一些日志消息,

FirebaseCrashlytics.getInstance().log("Reached breakpoint 2")

【讨论】:

以上是关于在 Crashlytics 上记录非致命错误的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Firebase (Crashlytics) 记录非致命(捕获)异常

在 Crashlytics 中查看特定问题的所有崩溃

如何使用 Firebase Crashlytics 跟踪 React Native 致命和非致命崩溃

Crashlytics.logException 方法抛出非法状态异常。无法收集某些活动的非致命问题

处理 Fabric/Crashlytics 中的错误分组

如何从 Fabric Crashlytics 迁移到 Firebase Crashlytics?