Comment puis-je convertir une trace de la pile d'une chaîne de caractères?

Quelle est la manière la plus facile de convertir le résultat de Throwable.getStackTrace() à une chaîne de caractères qui représente la stacktrace?

  • Parce que jqno réponse utilise en fait le Lancer.méthode getStackTrace() que vous avez indiqué dans votre question, alors que Brian ne l'est pas. Il utilise Throwable.printStackTrace() à la place.
  • Juste au sujet de chaque projet Java devrait inclure Apache commons-lang. Il comprend de nombreuses méthodes pratiques de mise en œuvre extrêmement commun des besoins de développement.
  • Ces trois lignes de code presque certainement besoin d'affacturage de l'endroit que vous avez appelés. Car vous ne savez pas où les mettre, ils vont aller dans votre utilitaire boîte à outils avec tous les autres extraits. Bingo! vous venez de réinventer la goyave / commons-lang / whatever... seulement pas si bien. Importer un sensible utilitaires de la bibliothèque de la place, et de les enregistrer, de réinventer la roue. Le véritable signe de la novice est de penser que vous pouvez faire un meilleur travail que la bibliothèque des écrivains.
  • NB Seul Niveau d'Abstraction Principe est la raison pour laquelle ce genre de chose devrait être pris en compte. Facilite la lisibilité et la testabilité, découvre des éléments réutilisables. Voir: slideshare.net/guestebde/10-ways-to-improve-your-code-neal-ford
  • 1. La goyave a - Throwables.getStackTraceAsString(e) 2. Apache Commons - Lang ExceptionUtils.getFullStackTrace 3. Écrire nos propres méthodes personnalisées
  • Je ne comprends pas pourquoi les gars, vous essayez donc dur de bash StijndeWitt de vouloir y parvenir avec une petit extrait. Il n'y a vraiment pas beaucoup de danger dans l'écriture d'un petit utilitaire de méthode (je ne le vois pas comme un "PURE ARROGANCE oh nooooo!! il pense qu'il est mieux que Apache!!"). Il y a des tonnes de projets, notamment dans les non-Java JVM langues qui ne veulent vraiment pas inclure de Goyave ou des Communes Lang juste pour se connecter à une stacktrace. J'écris Scala & Clojure bibliothèques et ne sera certainement pas faire de Apache Commons Lang une dépendance transitive juste pour une méthode.
  • Pas de dénigrement, à peine capable de désaccord. C'était un peu trop faux, j'ai été gâter pour un combat après avoir vu quelques mauvaises homebrewed utilitaires. Je suis d'accord il y a des raisons de ne pas ajouter une dépendance, je viens plus souvent l'inverse erreur.
  • Nous sommes donc beaucoup plus évolué et avancé maintenant dans notre connaissance et notre compréhension du code. Pas besoin de la petite questions plus. Laissez le commonfolk en pourriture dans leurs carences.
  • Je suis venu ici parce que lors de l'écriture d'Amazon Lambda fonctions en Java, vous voudrez peut-être éviter l'importation de bibliothèques, puisqu'ils font le conteneur de temps de démarrage de la sucer. Alors parfois, il est encore nécessaire de réinventer la roue. Ou peut-être que je pourrais résoudre ce avec ProGuard...
  • je ne sais pas si j'interprète votre sarcasme? correctement, mais je pense que vous n'avez pas interpréter moi correctement: je voulais dire, qui a DONC un Problème. En effet, il a tourné élitiste. Il échoue complètement à ouvrir une connexion pour les débutants à l'entrée. E. g. ils ne veulent pas d'un non-anglais DONC. Ce qui est contraire à la démocratie et élitiste. Il y a ppl qui peut programme/voulez mais ne pas s'exprimer correctement en anglais.
  • Il aurait aidé si vous ne supprimez pas votre commentaire... C'était évidemment le sarcasme bien. S. O. a toujours été pleine de élitistes et étroite d'esprit snobs. Ce n'est pas vraiment le S. O. de la faute, je ne pense pas, mais une faille avec l'humanité qui obtient mis sur l'affichage en très bonne place ici. Comme pour les anglophones: il existe une certaine sensibilité pour les deux côtés; je ne peux parler que de l'argument lui-même cependant.
  • Utilisation commons-lang. Josh Bloch dit: "Connaître et utiliser les bibliothèques.[...] ne pas réinventer la roue.Si vous avez besoin de faire quelque chose qui semble comme il devrait être assez commun,il y a peut-être déjà une classe dans les bibliothèques qui fait ce que vous voulez. Si il n'y a, à l'utiliser; si vous ne savez pas, vérifier.[...]De la bibliothèque de code est susceptible d'être mieux que le code que vous écrirez vous-même, et devrait s'améliorer au fil du temps.Ce n'est pas une réflexion sur vos capacités en tant que programmeur.Les économies d'échelle qui dictent code de la bibliothèque reçoit beaucoup plus d'attention que la plupart des développeurs pouvaient se permettre de consacrer à la même fonctionnalité."

InformationsquelleAutor ripper234 | 2009-07-19