Il y a e.printStackTrace()
méthode d'impression exceptionnelle d'erreur, donc je voudrais prendre toute exception en String
et qui le montrent en Toast.makeText()
Comment puis-je faire cela?
Si il y a plus de suppléant idée, alors s'il vous plaît de partager avec moi ou me suggérer.
Réponses
Trop de publicités?Utilisez le morceau de code suivant:
Writer writer = new StringWriter();
PrintWriter printWriter = new PrintWriter(writer);
exception.printStackTrace(printWriter);
String s = writer.toString();
Mise à jour
Comme indiqué par @BlackRider dans sa réponse il existe une meilleure façon d'extraire une exception stacktrace dans la Chaîne de caractères (mais sur Android 4.x il n'est pas toujours fiable, vérifier la mise à Jour 2 ci-dessous):
String stackTrace = Log.getStackTraceString(exception);
Selon la source, android.util.Log.getStackTraceString
méthode est exactement la même chose que le code que j'ai posté ci-dessus. C'est une pratique un liner pour obtenir la représentation de chaîne de l'exception stacktrace dans Android.
Mise à jour 2
Mais à partir d'Android 4.0 (API 14). Log.getStackTraceString
méthode n'est pas fiable en plus, comme elle renvoie une chaîne vide pour UnknownHostException
(voir Android question n ° 21436). Il est donc préférable d'utiliser le code que j'ai fourni au début de ce post.
vous pouvez imprimer la trace de la pile à un jet & lire.
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintWriter pw = new PrintWriter(baos);
e.printStackTrace(pw);
String stachTrace = new String(baos.toByteArray());
ou vous pouvez utiliser un StringWriter en place de la ByteArrayOutputStream.
Dans votre gestionnaire d'exception utiliser:
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
e.printStackTrace(pw);
whateverFunctionYouLikeToPrintYourStackTrace(sw.getBuffer().toString());
Cependant, vous êtes beaucoup mieux à l'aide de la BAD avec logcat, parce que les traces de pile sur des Toasts look terrible.