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.