Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Khi nào nên dùng phương thức fillInStackTrace() trong Java?

fillInStackTrace() là một phương thức quan trọng của lớp Throwable trong Java. Dấu vết ngăn xếp (stack trace) có thể hữu ích để xác định chính xác nơi ngoại lệ được ném. Có thể có những tình huống chúng ta cần ném lại một ngoại lệ và tìm ra nơi nó được ném lại, chúng ta có thể sử dụng phương thức fillInStackTrace() trong những trường hợp như vậy.

Cú pháp

public Throwable fillInStackTrace()

Ví dụ

public class FillInStackTraceTest {
    public static void method1() throws Exception {
        throw new Exception("Đây là ngoại lệ ném từ method1()");
    }

    public static void method2() throws Throwable {
        try {
            method1();
        } catch (Exception e) {
            System.err.println("Bên trong method2():");
            e.printStackTrace();
            throw e.fillInStackTrace(); // Gọi phương thức fillInStackTrace()
        }
    }

    public static void main(String[] args) throws Throwable {
        try {
            method2();
        } catch (Exception e) {
            System.err.println("Bắt trong phương thức main()");
            e.printStackTrace();
        }
    }
}

Kết quả

Bên trong method2():
java.lang.Exception: Đây là ngoại lệ ném từ method1()
     at FillInStackTraceTest.method1(FillInStackTraceTest.java:3)
     at FillInStackTraceTest.method2(FillInStackTraceTest.java:7)
     at FillInStackTraceTest.main(FillInStackTraceTest.java:18)
Bắt trong phương thức main()
java.lang.Exception: Đây là ngoại lệ ném từ method1()
     at FillInStackTraceTest.method2(FillInStackTraceTest.java:12)
     at FillInStackTraceTest.main(FillInStackTraceTest.java:18)