在 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) 记录非致命(捕获)异常
如何使用 Firebase Crashlytics 跟踪 React Native 致命和非致命崩溃