Java >> Java tutorial >  >> Tag >> Stack

Konvertering af en staksporing til en streng i Java

1. Introduktion

Når vi beskæftiger os med undtagelser i Java, logger vi ofte eller viser simpelthen stakspor. Men nogle gange ønsker vi ikke bare at udskrive stack-sporingen, vi skal muligvis skrive stack-sporingen til en fil, til en database eller endda sende den over netværket.

Til disse formål, at have stak-sporingen som en streng ville være meget nyttigt. Og desværre giver Java ikke en særlig bekvem metode til at gøre det direkte.

2. Konvertering med Core Java

Lad os starte med kernebiblioteket.

Funktionen printStackTrace() af undtagelsen klasse kan tage én parameter, enten en PrintStream eller en PrintWriter . Det er således muligt at bruge en StringWriter , for at udskrive staksporet i en streng :

StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
e.printStackTrace(pw);

Kald derefter sw.toString() returnerer staksporet som en streng .

3. Konvertering med Commons-Lang

Mens den forrige metode er den enkleste måde at konvertere et stakspor til en streng ved at bruge kerne Java forbliver det en smule besværligt. Heldigvis har Apache Commons-Lang en funktion, der gør jobbet.

Apache Commons-Lang er et meget nyttigt bibliotek, der tilbyder en masse funktioner, der mangler i kerneklasserne i Java API, inklusive klasser, der kan bruges til at arbejde med undtagelserne.

Lad os først starte med projektkonfigurationen. Når vi bruger Maven, skal vi blot tilføje følgende afhængighed til pom.xml :

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.12.0</version>
</dependency>

Så i vores tilfælde er den mest interessante klasse ExceptionUtils , som giver funktioner til at manipulere undtagelserne. Ved at bruge denne klasse får du staksporet som en streng fra en undtagelse er ret ligetil:

String stacktrace = ExceptionUtils.getStackTrace(e);

>4. Konklusion

Hentning af staksporet for en undtagelse som en streng er ikke svært, men det er langt fra at være intuitivt. Denne artikel præsenterer to måder at gøre det på, enten ved at bruge kerne Java eller ved at bruge Apache Commons-Lang.

Husk, at Java 9 vil bringe en ny StackWalking API, som burde gøre tingene lettere.

Som altid kan kodeeksemplerne findes her på GitHub.


Java tag