Что
Log.wtf
делает написать исключение и его трассировки стека в журнале, и только. Он не ловит и не исключает исключений. Таким образом,
Разница заключается в том, что исключение зарегистрировано или нет. Исключение остается необработанным.
Это не влияет на отчеты о сбоях.
Если вы хотите его зарегистрировать, перейдите по ссылке. Но вы хотите продолжать бросать IllegalStateException
.
EDIT
Я пытался отладки и заходя в Log.wtf
, но не повезло.
То, что я нашел, в значительной степени соответствует тому, на что ответили связанные вопросы. Похоже, что в «по умолчанию ужасной обработке отказа» Log.wtf
создает внутреннее исключение (TerribleFailure
), которое обертывает любое данное исключение. Затем он вызывает RuntimeInit.wtf()
. В его javadoc говорится:
Сообщите, что серьезная ошибка в текущем процессе. Может или не может вызвать процесс завершения (зависит от настроек системы).
Я думаю, что поведение Log.wtf
зависит от производителя устройства. Мой Sony C6503, похоже, не вызывает каких-либо исключений или не убивает процесс.
Некоторые открытая ссылка на источник:
https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/util/Log.java
https://android.googlesource.com/platform/frameworks/base/+/master/core/java/com/android/internal/os/RuntimeInit.java
Возможно, Log.wtf не генерирует исключение, но оно прекращает действие приложения, по крайней мере, иногда. Если это не прекратится, выбросив исключение, это повлияет на отчет о сбое, если я получу его вообще. – cambunctious
@cambunctious да, может быть, так. Из кода, который я связал, внутренние элементы Android обрабатывают исключения и убивают процесс в некоторых случаях. – nandsito
Возможно ли, что реализация Log.wtf завершила работу приложения без сбоев и вызвала отчет о сбое? – cambunctious