Плохо ли использовать printStackTrace() в Android Exceptions, как это?Плохо ли использовать printStackTrace() в Исключениях для Android?
} catch (Exception e) {
e.printStackTrace();
}
Плохо ли использовать printStackTrace() в Android Exceptions, как это?Плохо ли использовать printStackTrace() в Исключениях для Android?
} catch (Exception e) {
e.printStackTrace();
}
Да, это плохая идея. Вместо этого вы должны использовать встроенный класс журнала Android, специально предназначенный для этих целей: http://developer.android.com/reference/android/util/Log.html
Это дает вам варианты для входа отладочных сообщений, предупреждение, ошибка и т.д.
Вопрос: полезен при печати в трассировке стека в контексте приложения Andriod? Будет ли стандартный вывод отображаться во время выполнения? Кто-нибудь позаботится об этом?
Я хочу сказать, что если никто не собирается проверять стандартный вывод и не требует отладки ошибки, вызов этого метода является мертвым кодом, а составление сообщения stacktrace - бесполезный расход. Если вам нужно только для отладки при разработке, вы можете установить глобальную константу, доступную для, и проверить его во время выполнения:
} catch (Exception e) {
if(com.foo.MyEnvironmentConstants.isDebugging()) {
e.printStackTrace();
} //else do noting
}
Я хотел бы избежать с помощью printStackTrace()
, использовать систему регистрации и поддержку исключений.
log.log(Level.SEVERE, "Uncaught exception", e);
Поэтому, если вы хотите изменить порядок ведения журнала, это намного проще.
Я считаю, что это то, что вам нужно:
catch (Exception e) {
Log.e(TAG,Log.getStackTraceString(e));
}
Да. printStackTrace()
удобен, но обескуражен, особенно на Android, где он отображается через logcat
, но записывается на неопределенный уровень и без правильного сообщения. Вместо этого, правильный способ войти исключение составляет ...
Log.e(TAG, "Explanation of what was being attempted", e);
Обратите внимание, что исключение используется в качестве третьего параметра, не добавляется к параметру сообщения. Log
обрабатывает детали для вас - печать вашего сообщения (которое дает контекст того, что вы пытались сделать в своем коде), и сообщение Exception
, а также его трассировку стека.
Nope. То, что требуется OP, это 'Log.e (TAG,« Объяснение того, что было предпринято при выбросе исключения », e)'. Обратите внимание на третий параметр. Log.e (String, String, Throwable) получает строку stacktrace из Throwable для вас. Используйте параметр 'message' для чего-то значимого. – spaaarky21
@ spaaarky21 Вы должны сделать ответ. – AndreKR
@AndreKR Кто-то уже сделал. :) И я его поддержал. Я просто хотел указать, что этот ответ способствует плохой практике, поскольку он оценивается так высоко по сравнению с правильными ответами. – spaaarky21