"हाय, अमीगो!

"मैं आपको कुछ छोटी लेकिन दिलचस्प बात बताना चाहता हूं।"

"मैं सुन रहा हूँ। मुझे छोटी और दिलचस्प चीजें पसंद हैं।"

"ठीक है, आप जानते हैं कि प्रत्येक थ्रेड ऑब्जेक्ट में एक रन () विधि होती है। और आप इसे स्टार्ट () विधि का उपयोग करके एक अलग थ्रेड पर निष्पादित कर सकते हैं।"

"हाँ बिल्कुल।"

"लेकिन अब इस स्थिति की कल्पना करें: आप कुछ काम करने के लिए एक धागा शुरू करते हैं, लेकिन एक अपवाद फेंक दिया जाता है और धागा चलना बंद हो जाता है क्योंकि यह नहीं जानता कि क्या करना है। क्या आपको किसी तरह इस त्रुटि के बारे में जानने की आवश्यकता नहीं है?"

"मैं सहमत हूं। मुझे किसी तरह उस अपवाद को पकड़ना होगा जो दूसरे चल रहे धागे पर हुआ था। क्या जावा भी इसका समर्थन करता है?"

"आप मेरा अपमान करते हैं। बेशक यह करता है।"

"जावा के रचनाकारों ने एक विशेष इंटरफ़ेस का आविष्कार किया, जिसे UncaughtExceptionHandler कहा जाता है। यहाँ एक अपवाद को पकड़ने और संभालने का तरीका बताया गया है, जो किसी अन्य थ्रेड पर होता है, यदि वह थ्रेड इसे नहीं पकड़ता है:"

उदाहरण
public class DownloadManager
{
 public static void main(String[] args)
 {
   Thread thread = new DownloadThread();
   thread.setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler()
   {
    @Override
    public void uncaughtException(Thread t, Throwable e)
    {

    }
 });

 thread.start();
}

"थ्रेड ऑब्जेक्ट में एक विशेष setUncaughtExceptionHandler विधि है। आपको इसे एक ऑब्जेक्ट पास करने की आवश्यकता है जो थ्रेड को लागू करता है। अनकॉटएक्सप्शनहैंडलर इंटरफ़ेस। इस इंटरफ़ेस में केवल एक विधि है: uncaughtException (थ्रेड टी, थ्रोएबल ई) । यह वह तरीका है जिसे कॉल किया जाएगा। पारित वस्तु अगर रन विधि में एक अनकहा अपवाद होता है।"

" उपर्युक्त मेरे उदाहरण में, मैं केवल एक अज्ञात आंतरिक वर्ग (लाल रंग में हाइलाइट किया गया) घोषित करता हूं जो थ्रेड लागू करता है

"जैसा कि आप विधि की पैरामीटर सूची से देख सकते हैं, दो तर्क पारित किए जाएंगे: थ्रेड ऑब्जेक्ट का संदर्भ जहां अपवाद हुआ, और अपवाद ही, थ्रोएबल ई के रूप में पारित किया गया।"

"ठीक है, मुझे थ्रेड वेरिएबल टी की आवश्यकता क्यों है? क्या हम पहले से ही नहीं जानते हैं कि हम किस थ्रेड में थ्रेड डाल रहे हैं। UncaughtExceptionHandler ऑब्जेक्ट में?"

"उन्होंने ऐसा इसलिए किया ताकि आप इन परिस्थितियों के लिए एक सार्वभौमिक हैंडलर लिख सकें। यानी आप एक ऑब्जेक्ट बना सकते हैं और इसे दर्जनों अलग-अलग धागे में पास कर सकते हैं। फिर अनकॉट एक्सेप्शन (थ्रेड टी, थ्रोएबल ई) विधि आपको हमेशा एक संदर्भ देती है थ्रेड ऑब्जेक्ट जहां अपवाद हुआ।"

"क्या अधिक है, आप दर्जनों थ्रेड्स बना सकते हैं, उदाहरण के लिए, विशिष्ट कार्यों को करने के लिए एक लूप में। सामान्य तौर पर, थ्रेड ऑब्जेक्ट का यह संदर्भ अतिश्योक्तिपूर्ण नहीं होगा। मैं आपसे वादा करता हूं।"

"मुझे तुम पर विश्वास है। तुम कभी गलत नहीं हो।"