UncaughtExceptionHandler Thread क्लास के अंदर एक इंटरफेस है। जब मेन थ्रेड अनकॉट एक्सेप्शन के कारण समाप्त होने वाला होता है तो जावा वर्चुअल मशीन थ्रेड के UncaughtExceptionHandler को कुछ एरर हैंडलिंग करने का मौका देने के लिए इनवोक करेगी जैसे एक्सेप्शन को फ़ाइल में लॉग करना या लॉग को सर्वर पर अपलोड करना इससे पहले कि यह मारा जाए। हम एक डिफ़ॉल्ट एक्सेप्शन हैंडलर सेट कर सकते हैं जिसे सभी अनहैंडल्ड एक्सेप्शन्स के लिए कॉल किया जाएगा। यह Java 5 संस्करण में पेश किया गया था।
इस हैंडलर को 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
यह ग्लोबल एक्सेप्शन हैंडलिंग के लिए उपयोगी है, विशेष रूप से अनहैंडल्ड एक्सेप्शन्स को लॉग करने या रिपोर्ट करने के लिए।