Verem nyomkövetés konvertálása karakterláncra Java-ban

1. Bemutatkozás

A Java-kivételek kezelésekor gyakran naplózunk vagy egyszerűen megjelenítjük a verem nyomait. Néha azonban nem csak a veremnyomtatást akarjuk kinyomtatni, esetleg a veremkövetést fájlba, adatbázisba kell írnunk, vagy akár továbbítanunk kell a hálózaton keresztül.

Ebből a célból a verem nyomkövetése a Húr nagyon hasznos lenne. És sajnos a Java nem nyújt túl kényelmes módszert ennek közvetlen végrehajtására.

2. Konvertálás Core Java-val

Kezdjük a törzskönyvtárral.

A funkció printStackTrace () a Kivétel osztály egy paramétert vehet fel, akár a PrintStream vagy a PrintWriter. Így lehetséges az a használatával StringWriter, a verem nyomának nyomtatásához a Húr:

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

Aztán hívás közben sw.toString () a verem nyomát a-ként adja vissza Húr.

3. Konvertálás a Commons-Lang-nal

Míg az előző módszer a verem nyomkövetésének a-vé alakításának legegyszerűbb módja Húr a Java Java használatával kissé nehézkes marad. Szerencsére az Apache Commons-Lang olyan funkciót biztosít, amely elvégzi a munkát.

Az Apache Commons-Lang egy nagyon hasznos könyvtár, amely sok olyan funkciót kínál, amelyek hiányoznak a Java API törzsosztályaiból, beleértve azokat az osztályokat is, amelyek a kivételekkel használhatók.

Először kezdjük a projekt konfigurációjával. A Maven használatakor csak hozzá kell adnunk a következő függőséget a pom.xml:

 org.apache.commons commons-lang3 3.5 

Akkor esetünkben a legérdekesebb osztály az ExceptionUtils, amely funkciókat biztosít a kivételek manipulálására. Ennek az osztálynak a használatával kapja meg a verem nyomát a-ként Húr egy an Kivétel elég egyértelmű:

String stacktrace = ExceptionUtils.getStackTrace (e); 

4. Következtetés

A kivétel verem nyomának megszerzése a Húr nem nehéz, de korántsem intuitív. Ez a cikk ennek kétféle módját mutatja be, akár a Java Java, akár az Apache Commons-Lang használatával.

Ne feledje, hogy a Java 9 új StackWalking API-t hoz, amely megkönnyíti a dolgokat.

Mint mindig, itt is megtalálhatók a kódminták a GitHubon.