Подтвердить что ты не робот

Неплохо ли использовать printStackTrace() в Исключениях для Android?

Неплохо ли использовать printStackTrace() в исключениях для Android?

} catch (Exception e) {
    e.printStackTrace();
}
4b9b3361

Ответ 1

Да, это плохая идея. Вместо этого вы должны использовать встроенный класс журнала Android, специально предназначенный для этих целей: http://developer.android.com/reference/android/util/Log.html

Он дает вам возможность регистрировать отладочные сообщения, предупреждения, ошибки и т.д.

Ответ 2

Я считаю, что это то, что вам нужно:

catch (Exception e) {
     Log.e(TAG,Log.getStackTraceString(e)); 
}

Ответ 3

Да. printStackTrace() удобен, но обескуражен, особенно на Android, где он отображается через logcat, но регистрируется на неопределенном уровне и без правильного сообщения. Вместо этого правильный способ регистрации исключения...

Log.e(TAG, "Explanation of what was being attempted", e);

Обратите внимание, что исключение используется в качестве третьего параметра, не добавляемого к параметру сообщения. Log обрабатывает детали для вас - печатает ваше сообщение (которое дает контекст того, что вы пытались сделать в своем коде) и сообщение Exception, а также его трассировку стека.

Ответ 4

Вопрос: полезен ли вообще для печати трассировка стека в контексте приложения Andriod? Будет ли стандартный вывод отображаться во время выполнения? Кто-нибудь позаботится об этом?

Я хочу сказать, что если никто не будет проверять стандартный вывод и не будет отлаживать ошибку, вызов этого метода будет мертвым кодом, а составление сообщения stacktrace - бесполезный расход. Если вам это нужно только для отладки при разработке, вы можете установить доступную глобальную константу и проверить ее во время выполнения:

} catch (Exception e) {
   if(com.foo.MyEnvironmentConstants.isDebugging()) {
      e.printStackTrace();
   } //else do noting
}

Ответ 5

Я бы не использовал printStackTrace(), использовал систему регистрации и поддержку исключений.

log.log(Level.SEVERE, "Uncaught exception", e);

Итак, если вы хотите изменить способ ведения журнала, это намного проще.