我读过这里,e.printStackTrace()不应该被用来捕捉android上的异常。
在另一个消息来源中,我读到我应该使用Log.e()而不是e.printStackTrace()
... catch (Exception e) {
Log.e(TAG, "Foo did not work", e);
}我是否必须在发布版本中手动删除这些调用?在Android中跟踪异常日志的最佳实践是什么?
发布于 2015-09-29 09:25:58
捕获异常的主要目的当然是处理正在发生的问题,因此您的catch部分应该始终以某种方式处理错误,例如,对不起作用的事情使用默认值,或者尝试一些不同的方法。
无论如何,如果您计划在Google中发布应用程序,如果您想记录异常并使用它们调试puropses,则可以使用用于处理异常的部分来进一步改进应用程序。它还提供收集堆栈跟踪的工具。(这是API页面中的一个示例)
// 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处理程序。
Thread.setDefaultUncaughtExceptionHandler(new MyReportHelper());当然,您应该始终尝试捕捉和处理您所知道的所有异常,此处理程序仅用于紧急情况。有关处理程序的更多细节,请参见这里。
https://stackoverflow.com/questions/32838429
复制相似问题