Ist es eine schlechte Idee, printStackTrace (), die für caugt Ausnahmen?
Ist es eine schlechte Idee, verwenden Sie printStackTrace() in Android Ausnahmen wie diese?
} catch (Exception e) {
e.printStackTrace();
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, es ist eine schlechte Idee. Sollten Sie stattdessen die Verwendung von Android ' s built-in log-Klasse speziell für diese Zwecke: http://developer.android.com/reference/android/util/Log.html
Es gibt Ihnen Optionen zum protokollieren von debug-Meldungen, Warnungen, Fehler usw.
Protokollierung von Fehlern mit:
Log.e(TAG, "message", e)
wo die Nachricht empfangen werden kann, eine Erklärung von dem, was wurde versucht, wenn die exception geworfen wurdeoder einfach
Log.e(TAG, e)
wenn Sie nicht wollen, um jede Nachricht für den ZusammenhangKönnen Sie dann klicken Sie auf den log-Konsole an der Unterseite, während Sie Ihren code ausführen und einfach suchen, es mit dem TAG-oder log-Meldung geben Sie als filter
Ich glaube, das ist das, was Sie brauchen:
Log.e(TAG, "Explanation of what was being attempted when the exception was thrown", e)
. Beachten Sie den Dritten parameter. Log.e(String,String,Throwable) liefert den stacktrace-string von der Throwable für Sie. Verwenden Sie diemessage
parameter für etwas sinnvolles.android.util.Log.e()
. Ich habe nicht erfahren, dass eine der anderen Antworten. (Ich habe nicht auf den link in Nailuj Antwort.)Log
in einer ungewöhnlichen Art und Weise – mit einemLog
Instanz (nehme ich an?) und übergeben Sie die Ebene als parameter. Ich fügte hinzu, eine Antwort.Ja.
printStackTrace()
ist praktisch, aber es wird davon abgeraten, vor allem auf Android, wo es sichtbar ist, durchlogcat
aber wird protokolliert, auf unbestimmte Ebene und ohne eine richtige Nachricht. Stattdessen werden die ordnungsgemäße Anmeldung, die eine Ausnahme ist...Beachten Sie, dass die Ausnahme dient als Dritten parameter nicht an die message-parameter.
Log
behandelt die details für Sie – drucken Sie Ihre Nachricht (was dem Kontext von dem, was Sie versuchen zu tun, in Ihrem code) und dieException
's message, sowie seine stack-trace.Die Frage ist: ist es sinnvoll, bei allen print auf der stack-trace in eine Andriod application context?
Wird die standard-Ausgabe werden zur Laufzeit sichtbar? Wird jemand kümmern?
Mein Punkt ist, dass, wenn niemand wird, um zu überprüfen, die standard-Ausgabe und-Pflege, zum Debuggen den Fehler, den Aufruf dieser Methode Toten code, und Komponieren die stacktrace-Meldung ist ein wertloses Kosten. Wenn Sie es brauchen, nur für die Fehlersuche bei der Entwicklung, können Sie eine accesible Globale Konstante, und überprüfen Sie es bei der Laufzeit:
Ich würde vermeiden, mit
printStackTrace()
verwenden Sie ein logging-system und die Unterstützung von Ausnahmen.Also, wenn Sie ändern möchten, wie die Anmeldung gehandhabt wird, ist es viel einfacher.