2010-10-04 2 views

ответ

30

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

Это дает вам варианты для входа отладочных сообщений, предупреждение, ошибка и т.д.

9

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

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

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

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

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

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

41

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

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

Nope. То, что требуется OP, это 'Log.e (TAG,« Объяснение того, что было предпринято при выбросе исключения », e)'. Обратите внимание на третий параметр. Log.e (String, String, Throwable) получает строку stacktrace из Throwable для вас. Используйте параметр 'message' для чего-то значимого. – spaaarky21

+0

@ spaaarky21 Вы должны сделать ответ. – AndreKR

+0

@AndreKR Кто-то уже сделал. :) И я его поддержал. Я просто хотел указать, что этот ответ способствует плохой практике, поскольку он оценивается так высоко по сравнению с правильными ответами. – spaaarky21

15

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^