Kami telah menganalisis fungsi penggunaan tumpukan pengecualian Java melalui kode contoh dan menyusun dua metode untuk Java untuk mendapatkan informasi tumpukan pengecualian di bawah ini. Berikut ini adalah semua konten:
(Stack Trace) Pengecualian Stack Trace mengacu pada:
Saat melempar yang dapat dilempar, objek yang dapat dilempar melempar beberapa metode panggilan (Metode Call Stack) yang dilalui proses (antar -jemput). Semakin dekat Anda ke pernyataan lemparan, metode pertama kali memasuki tumpukan pengecualian.
(Rantai kausal yang dapat dilemparkan) Pengecualian Rantai Penyebab:
Properti penyebab di kelas yang dapat dilempar mewakili pengecualian asli yang dibungkus oleh pengecualian saat ini. (Dapat disebut penyebab pengecualian)
Saat mencetak trek tumpukan pengecualian, tumpukan pengecualian dari pengecualian asli dicetak secara rekursif.
Sekarang mari menganalisis metode Throwable.PrintStackTrace ().
Di dalam Throwable.PrintStackTrace (PrintStreamorWriter S), kita dapat melihat:
Saat mencetak tumpukan pengecualian, tumpukan pengecualian objek pengecualian saat ini, ini pertama kali dicetak.
Kemudian cetak rantai penyebab pengecualian. (Cetak Tumpukan Pengecualian Rekursif dari Pengecualian Asli)
disinkronkan (s.lock ()) {// cetak jejak tumpukan kami // 1. Pertama cetak tumpukan pengecualian dari objek pengecualian saat ini ini. S.Println (ini); StacktraceElement [] trace = getourstacktrace (); untuk (StackTraceElement TraceElement: Trace) S.Println ("/tat" + TraceElement); // cetak pengecualian yang ditekan, jika ada untuk (lempar SE: getsuppressed ()) se.printenclosedStackTrace (s, jejak, ditekan_caption, "/t", dejavu); // Cetak penyebab, jika ada // 2. Cetak Penyebab OurCause = getCause (); if (ourcause! = null) OurcaCause.printenclosedStackTrace (S, Trace, Cause_caption, "", dejavu); }Java memperoleh informasi tumpukan pengecualian
Metode 1:
Public Static String GetStackTrace (Throwable T) {StringWriter SW = New StringWriter (); Printwriter pw = printwriter baru (sw); coba {T.PrintStackTrace (PW); return sw.tostring (); } akhirnya {pw.close (); }}Metode 2:
org.apache.commons.lang3.exception.exceptionutils.getstacktrace (e);