我刚刚了解了Log.wtf
("多么可怕的失败" lol),我想知道何时应该使用它。
Log.wtf
和异常处理(崩溃)之间有什么区别?IllegalStateException
。我应该考虑改为拨打Log.wtf
吗?修改
另请参阅:Under what circumstances will Android's Log.wtf terminate my app?
答案 0 :(得分:4)
Log.wtf
做的是在日志中写入异常及其堆栈跟踪,并且只有那样。它既不会捕获也不会抛出异常。所以击>
区别在于是否记录了异常。该例外仍未处理。
它不会影响崩溃报告。
如果您想记录它,请继续。但是你要继续投掷 IllegalStateException
。
修改强>
我尝试调试并踩到Log.wtf
,但没有运气。
我发现的内容几乎与链接问题的答案相同。似乎在“默认的可怕故障处理”Log.wtf
中创建了一个内部异常(TerribleFailure
),它包装了任何给定的异常。然后它调用RuntimeInit.wtf()
。它的javadoc说:
报告当前流程中的严重错误。可能或可能不会导致 终止的过程(取决于系统设置)。
我想Log.wtf
的行为取决于设备制造商。我的索尼C6503似乎没有引起任何异常或杀死这个过程。
一些开源参考:
https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/util/Log.java
答案 1 :(得分:0)
默认情况下不记录未处理的异常。 Log.wtf
可能会也可能不会使应用程序崩溃。如果您将异常传递给Log.wtf
并且它崩溃了,那么您应该获得类似于未处理异常时所获得的堆栈跟踪。在调用Log.wtf
之后,如果你想确保崩溃(当然没有捕获它),你应该(重新)抛出异常。
Log.wtf
可能有特定用例,但如果您不确定,最好使用Log.e
。