我看过android.util.Log文档,我不知道Log.e()
和Log.wtf()
到底有什么区别。一个比另一个更好吗?功能上有什么不同吗?他们当然不是多余的。
给未来读者的注意:在提出这个问题时,这方面的文档就不那么清晰了。如果您按照上面的链接,他们已经解决了问题。
发布于 2012-03-01 13:32:20
严重程度不同;
Log.e()
将简单地将错误记录到带有优先级错误的日志中。
Log.wtf()
将记录带有优先级断言的错误,并可能(取决于系统配置)发送错误报告并立即终止程序。
发布于 2017-11-15 09:50:41
常见错误
官方文件说:
带有优先级错误的Log.e()
日志。但是,Log.wtf()
使用优先级断言进行日志记录。
拥有优先级常量=7
错误具有优先级常数=6
因此,Log.wtf()
相对于Log.e()
具有更高的优先级。
但是,源代码 与上述信息冲突。
static int wtf(int logId, String tag, String msg, Throwable tr,boolean localStack, boolean system) {
TerribleFailure what = new TerribleFailure(msg, tr);
// Only mark this as ERROR, do not use ASSERT since that should be
// reserved for cases where the system is guaranteed to abort.
// The onTerribleFailure call does not always cause a crash.
int bytes = printlns(logId, ERROR, tag, msg, localStack ? what : tr);
...
}
看起来在官方文档中出现了一个错误,。因为Log.wtf()
和Log.e()
都记录有优先级错误。
实差
Log.e()的源代码:
public static int e(@Nullable String tag, @Nullable String msg,@Nullable Throwable tr) {
return printlns(LOG_ID_MAIN, ERROR, tag, msg, tr);
}
区别在于Log.wtf()可能会调用onTerribleFailure()回调。
onTerribleFailure()可能导致或不可能导致进程终止(取决于系统设置)。
TL;博士
Log.wtf()可以调用onTerribleFailure(),并可能导致应用程序的终止。
发布于 2017-04-03 06:32:54
Log.e()
是简单地将错误记录到日志中,并以优先级作为错误。
Log.wtf()
(多么可怕的失败)比错误日志更严重。从来没有发生过的错误。它可能会迫使设备在终止程序之前保存日志。
https://stackoverflow.com/questions/9524369
复制相似问题