fillInStackTrace() เป็นเมธอดสำคัญของคลาส Throwable ใน Java Stack trace สามารถช่วยระบุได้ว่าข้อยกเว้น (exception) ถูกโยนที่ตรงไหน อาจมีสถานการณ์ที่ต้อง rethrow exception และต้องการทราบว่ามันถูก rethrow ที่ไหน สามารถใช้เมธอด fillInStackTrace() ในกรณีเช่นนี้
Syntax
public Throwable fillInStackTrace()
ตัวอย่าง
public class FillInStackTraceTest {
public static void method1() throws Exception {
throw new Exception("This is thrown from method1()");
}
public static void method2() throws Throwable {
try {
method1();
} catch (Exception e) {
System.err.println("Inside method2():");
e.printStackTrace();
throw e.fillInStackTrace(); // เรียก fillInStackTrace() method
}
}
public static void main(String[] args) throws Throwable {
try {
method2();
} catch (Exception e) {
System.err.println("Caught Inside Main method()");
e.printStackTrace();
}
}
}
Output
Inside method2():
java.lang.Exception: This is thrown from method1()
at FillInStackTraceTest.method1(FillInStackTraceTest.java:3)
at FillInStackTraceTest.method2(FillInStackTraceTest.java:7)
at FillInStackTraceTest.main(FillInStackTraceTest.java:18)
Caught Inside Main method()
java.lang.Exception: This is thrown from method1()
at FillInStackTraceTest.method2(FillInStackTraceTest.java:12)
at FillInStackTraceTest.main(FillInStackTraceTest.java:18)
สังเกตว่า stack trace ครั้งที่สอง (ใน main) แสดงว่าข้อยกเว้นมาจาก method2() บรรทัดที่ 12 (จุดที่ fillInStackTrace() ถูกเรียก) ไม่ใช่ method1() แล้ว