Log.wtf()与Log.e()有什么不同?
我已经看过了android.util.Log的文档 ,我不确定Log.e()
和Log.wtf()
之间的区别是什么。 一个比另一个更受欢迎吗? 有没有function差异? 他们当然不是多余的。
请注意未来的读者 :在提出这个问题的时候,这个文档就不太清楚了。 如果你按照上面的链接,他们已经解决了这个问题。
严重程度有所不同,
Log.e()
将简单地将错误logging到具有优先级ERROR的日志中。
Log.wtf()
会logging一个优先级为ASSERT的错误,并可能(取决于系统configuration)发送错误报告并立即终止程序。
Log.e()
是简单地将日志错误logging到日志中,优先级为ERROR。
Log.wtf()
(可怕的失败)比错误日志更严重。 从来没有发生过的错误。 在终止程序之前,可能会强制设备保持写日志。
我认为wtf(可怕的失败)用于报告应用程序的严重exception/问题(例如,在debugging控制台中报告它们)。
log.e用于报告错误,但没有那么严重。
和其他日志loggingtypes一样,我知道它只是日志消息的另一种标签types。 log.i是关于在哪里发生的信息。 log.e是可能发生的错误。 log.wtf是针对从未发生的错误。 我认为这只是一个快速的方式,所以你没有Log(“ERROR:”,“an error”)和Log(“INFO:”,“information”)
实际上,这可能是Android SDK中的一个文档错误,真是一个惊喜…… Doc说:
错误将始终以调用堆栈的级别ASSERTlogging。
但源代码说:
static int wtf(int logId, String tag, String msg, Throwable tr, boolean localStack, boolean system) { ... int bytes = printlns(logId, ERROR, tag, msg, localStack ? what : tr); ... }
所以,Log.wtf()和Log.e()都具有相同的优先级ERROR。
所不同的是,Log.wtf()调用onTerribleFailure()callback,其中“报告当前进程中有严重错误,可能会导致进程终止(取决于系统设置)。
换句话说,Log.wtf()可能会导致应用程序崩溃。
以下是一段代码片段:
if (ActivityManager.getService().handleApplicationWtf( mApplicationObject, tag, system, new ApplicationErrorReport.ParcelableCrashInfo(t))) { // The Activity Manager has already written us off -- now exit. Process.killProcess(Process.myPid()); System.exit(10); }
Log.wtf()
与Log.e()
很相似,但Log.wtf()
通常用于超意外情况。
起初,我认为这是一个笑话,但它是: https : //developer.android.com/reference/android/util/Log.html
还有一个理由来爱Android <3