UncaughtExceptionHandler เป็นอินเทอร์เฟซภายใน เธรด ระดับ. เมื่อ กระทู้หลัก กำลังจะสิ้นสุดลงเนื่องจากข้อยกเว้นที่ตรวจไม่พบ เครื่องเสมือน Java จะเรียกใช้ UncaughtExceptionHandler . ของเธรด สำหรับโอกาสที่จะดำเนินการจัดการข้อผิดพลาดเช่นการบันทึก ข้อยกเว้นไปยังไฟล์ หรือ อัปโหลดบันทึกไปยังเซิร์ฟเวอร์ ก่อนที่มันจะถูกฆ่า เราสามารถตั้งค่าตัวจัดการข้อยกเว้นเริ่มต้นซึ่งจะถูกเรียกสำหรับข้อยกเว้นที่ไม่สามารถจัดการได้ทั้งหมด เปิดตัวใน Java 5 Version .
ตัวจัดการนี้สามารถตั้งค่าได้โดยใช้วิธีการคงที่ด้านล่างของ java.lang.Thread ชั้นเรียน
public static void setDefaultUncaughtExceptionHandler(Thread.UncaughtExceptionHandler ueh)
เราต้องจัดเตรียมการใช้งานอินเทอร์เฟซ Thread.UncaughtExceptionHandler ซึ่งมีวิธีการเดียวเท่านั้น
ไวยากรณ์
@FunctionalInterface
public interface UncaughtExceptionHandler {
void uncaughtException(Thread t, Throwable e);
} ตัวอย่าง
public class UncaughtExceptionHandlerTest {
public static void main(String[] args) throws Exception {
Thread.setDefaultUncaughtExceptionHandler(new MyHandler());
throw new Exception("Test Exception");
}
private static final class MyHandler implements Thread.UncaughtExceptionHandler {
@Override
public void uncaughtException(Thread t, Throwable e) {
System.out.println("The Exception Caught: " + e);
}
}
} ผลลัพธ์
The Exception Caught: java.lang.Exception: Test Exception