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