Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

เมื่อไหร่ควรใช้เมธอด fillInStackTrace() ใน Java

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() แล้ว