首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Android中混淆e.printStackTrace()

在Android中混淆e.printStackTrace()
EN

Stack Overflow用户
提问于 2015-09-29 07:43:54
回答 1查看 2.4K关注 0票数 3

我读过这里e.printStackTrace()不应该被用来捕捉android上的异常。

在另一个消息来源中,我读到我应该使用Log.e()而不是e.printStackTrace()

代码语言:javascript
复制
... catch (Exception e) {
 Log.e(TAG, "Foo did not work", e);
}

我是否必须在发布版本中手动删除这些调用?在Android中跟踪异常日志的最佳实践是什么?

EN

回答 1

Stack Overflow用户

发布于 2015-09-29 09:25:58

捕获异常的主要目的当然是处理正在发生的问题,因此您的catch部分应该始终以某种方式处理错误,例如,对不起作用的事情使用默认值,或者尝试一些不同的方法。

无论如何,如果您计划在Google中发布应用程序,如果您想记录异常并使用它们调试puropses,则可以使用用于处理异常的部分来进一步改进应用程序。它还提供收集堆栈跟踪的工具。(这是API页面中的一个示例)

代码语言:javascript
复制
// Using StandardExceptionParser to get an Exception description.
try {

  // Request some scores from the network.
  ArrayList<Integer> highScores = getHighScoresFromCloud();

} catch (IOException e) {
// Get tracker.
Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
    TrackerName.APP_TRACKER);

  t.send(new HitBuilders.ExceptionBuilder()
      .setDescription(
          new StandardExceptionParser(this, null)
              .getDescription(Thread.currentThread().getName(), e))
      .setFatal(false)
      .build()
  );

  ... // Display alert to user that high scores are currently unavailable.
}

之后,所有跟踪的stracktrace将显示在Google控制台中,点击你的应用程序。

您还可以添加一个侦听器来捕获未处理的异常。因此,每当出现意外事件时,就会调用whis处理程序。

代码语言:javascript
复制
Thread.setDefaultUncaughtExceptionHandler(new MyReportHelper());

当然,您应该始终尝试捕捉和处理您所知道的所有异常,此处理程序仅用于紧急情况。有关处理程序的更多细节,请参见这里

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32838429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档