अपवाद अप्रत्याशित घटनाएं हैं जो प्रोग्राम निष्पादन के दौरान होती हैं। जब आपका कोड अपवाद का सामना करता है, तो आपके प्रोग्राम का प्रवाह समाप्त कर दिया जाएगा।
जब आप जावा में कोडिंग कर रहे हों तो यह महत्वपूर्ण है कि आप अपवादों को सही ढंग से संभालें। अन्यथा, आपका कोड निष्पादन के दौरान समाप्त हो सकता है और अंतिम-उपयोगकर्ता अनुभव को प्रभावित कर सकता है।
यहीं से थ्रो एंड थ्रो कीवर्ड आते हैं। जावा में अपवादों को संभालने के लिए जावा थ्रो एंड थ्रो कीवर्ड का उपयोग किया जाता है। यह ट्यूटोरियल उदाहरणों के संदर्भ में चर्चा करेगा कि जावा में इन कीवर्ड्स का उपयोग कैसे करें।
जावा अपवाद
जावा में, दो घटनाएं हैं जो आपके प्रोग्राम के प्रवाह को प्रभावित कर सकती हैं:त्रुटियां और अपवाद।
पहली घटना एक त्रुटि है, जो जावा वर्चुअल मशीन में समस्याओं का प्रतिनिधित्व करती है जैसे मेमोरी लीक, सिस्टम मेमोरी से बाहर चल रहा है, और लाइब्रेरी संगतता समस्याएं। जब कोई त्रुटि आती है, तो प्रोग्राम के ठीक होने की संभावना नहीं होती है। हालांकि, त्रुटियां आमतौर पर कोडर के नियंत्रण से बाहर होती हैं, और इसलिए जावा में, हम त्रुटियों को संभाल नहीं पाते हैं।
अपवाद दूसरे प्रकार के ईवेंट हैं जो आपके प्रोग्राम को प्रभावित कर सकते हैं। आपके कोड में अपवादों को पकड़ा और संभाला जा सकता है। जब एक अपवाद का सामना करना पड़ता है, तो अपवाद के बारे में जानकारी के साथ एक वस्तु बनाई जाती है, जिसका उपयोग आप अपने कोड को यह बताने के लिए कर सकते हैं कि अपवाद का सामना करने पर क्या होना चाहिए।
अपवाद होने के कुछ कारणों में शामिल हैं:
- आपके कोड में त्रुटियां
- गैर-मौजूद फ़ाइलें खोलना
- अमान्य उपयोगकर्ता इनपुट
- नेटवर्क कनेक्टिविटी खोना
अपवादों को संभालने से पहले आपको दो प्रकार के अपवादों के बारे में पता होना चाहिए:
81% प्रतिभागियों ने कहा कि बूटकैंप में भाग लेने के बाद उन्हें अपनी तकनीकी नौकरी की संभावनाओं के बारे में अधिक आत्मविश्वास महसूस हुआ। आज ही एक बूटकैंप से मिलान करें।
बूटकैंप शुरू करने से लेकर अपनी पहली नौकरी खोजने तक, औसत बूटकैंप ग्रेड ने करियर संक्रमण में छह महीने से भी कम समय बिताया।
- अनियंत्रित अपवादों को रन-टाइम पर चेक किया जाता है। इनमें शामिल हैं
ArithmeticException
औरArrayIndexOutOfBoundsException
। - चेक किए गए अपवादों को संकलन-समय पर चेक किया जाता है, और इसमें
IOException
शामिल होते हैं औरInterruptedException
।
अधिकांश भाग के लिए, आप अपने कोड में चेक किए गए अपवादों को संभालना चाहते हैं। ऐसा इसलिए है क्योंकि अनियंत्रित अपवाद आमतौर पर आपके कोड में अप्रत्याशित व्यवहार के बजाय प्रोग्रामिंग त्रुटियों का परिणाम होते हैं।
जावा थ्रो कीवर्ड
जावा throws
कीवर्ड का उपयोग कोड के ब्लॉक में उत्पन्न होने वाले अपवादों के प्रकार को घोषित करने के लिए किया जाता है। थ्रो क्लॉज के लिए सिंटैक्स यहां दिया गया है:
एक्सेसमोडिफायर रिटर्न फंक्शननाम () अपवाद 1, अपवाद 2 {// रन कोड} को फेंकता है।आइए एक उदाहरण का उपयोग करके यह बताएं कि यह कैसे काम कर सकता है। मान लीजिए कि हम एक सिनेमा के लिए एक कार्यक्रम बना रहे हैं जो एक फिल्म में भाग लेने वाले ग्राहक की उम्र 16 से अधिक के लिए जांचता है। यदि ग्राहक की आयु 16 वर्ष से कम है, तो उन्हें फिल्म देखने की अनुमति नहीं दी जानी चाहिए; यदि वे 16 वर्ष या उससे अधिक हैं, तो उन्हें प्रवेश करने की अनुमति दी जानी चाहिए।
यहां वह कोड है जिसका उपयोग हम ग्राहक की आयु की जांच करने के लिए करेंगे और यदि ग्राहक की आयु 16 वर्ष से कम है तो अंकगणित अपवाद अपवाद को फेंक दें:
क्लास मेन {सार्वजनिक स्थैतिक शून्य सत्यापन आयु (इंट आयु) अंकगणित अपवाद फेंकता है {अगर (उम्र <16) {नया अंकगणित अपवाद फेंकें ("यह ग्राहक फिल्म देखने के लिए पर्याप्त पुराना नहीं है।"); } और { System.out.println ("यह ग्राहक फिल्म देखने के लिए काफी पुराना है।"); } } सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] args) {verifyAge(14); }}पूर्व>हमारा कोड लौटाता है:
थ्रेड में अपवाद "मुख्य" java.lang.ArithmeticException:
This customer is not old enough to see the movie.
at Main.verifyAge(Main.java:4)
. पर
at Main.main(Main.java:11)
जब हम इस कार्यक्रम को चलाते हैं, तो हमारे मुख्य कार्यक्रम में निर्दिष्ट आयु पैरामीटर 14 पर सेट होता है। यह 16 से कम है, इसलिए जब
verifyAge()
विधि निष्पादित की जाती है, कथनage < 16
सत्य का मूल्यांकन करता है, और एक अंकगणित अपवाद फेंक दिया जाता है।
थ्रो कीवर्ड का उपयोग अपवाद के प्रकार को परिभाषित करने के लिए किया जाता है जिसे
verifyAge()
द्वारा लौटाया जाएगा। तरीका। थ्रो कीवर्ड का प्रयोग हमारे प्रोग्राम में एक्सेप्शन को थ्रो करने के लिए किया जाता है।जावा थ्रो कीवर्ड
जावा थ्रो कीवर्ड का उपयोग आपके कोड में एक अपवाद को फेंकने के लिए किया जाता है। थ्रो कीवर्ड के बाद एक ऑब्जेक्ट आता है जिसे अपवाद का सामना करने पर प्रोग्राम में फेंक दिया जाएगा।
जावा थ्रो कीवर्ड का सिंटैक्स यहां दिया गया है:
throw throwObject;
आइए जावा में अपवादों को संभालने के लिए उपयोग किए जा रहे थ्रो स्टेटमेंट के कुछ उदाहरणों के माध्यम से चलते हैं।
चेक किए गए अपवाद को फेंकें
मान लीजिए कि हम एक संदेश दिखाना चाहते हैं जो कहता है, "यह फ़ाइल मौजूद नहीं है।" जब एक
<पूर्व>आयात java.io.*;वर्ग मुख्य सार्वजनिक स्थैतिक शून्य getFile() IOException फेंकता है {नया IOException फेंकें ("यह फ़ाइल मौजूद नहीं है।"); } सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] तर्क) {कोशिश {getFile (); } पकड़ें (IOException त्रुटि) { System.out.println (e.getMessage ()); } }}IOException
हमारे कार्यक्रम में मिलता है।IOExceptions
चेक किए गए अपवाद हैं, और इसलिए हमें "फेंक" कीवर्ड का उपयोग करके उन्हें संभालना चाहिए। यहां वह कोड है जिसका उपयोग हम अपवाद को संभालने के लिए करेंगे:
हमारा कोड लौटाता है:
This file does not exist.
आइए हमारे कोड को तोड़ दें। सबसे पहले, हम
java.io
. आयात करते हैं पुस्तकालय, जिसे हम फाइलों को संभालने वाले किसी भी प्रोग्राम में उपयोग करेंगे। फिर हम मेन नामक एक क्लास बनाते हैं, जो हमारे प्रोग्राम के लिए कोड स्टोर करती है।
हमारे
Main
. में वर्ग, हमgetFile()
. नामक एक फ़ंक्शन को परिभाषित करते हैं जो एकIOException
फेंकता है . यह फ़ंक्शन "यह फ़ाइल मौजूद नहीं है" संदेश के साथ एक IOException फेंक देगा। हमारे कार्यक्रम के लिए।
हमारे मुख्य वर्ग में मुख्य कार्य में, हम एक कोशिश/पकड़ ब्लॉक बनाते हैं जो
getFile()
को निष्पादित करने का प्रयास करता है तरीका। यदि एक IOException का सामना करना पड़ता है, तो कैच ब्लॉक के भीतर कोड निष्पादित होगा, और IOException से संदेश कंसोल पर प्रिंट किया जाएगा। तो, हमारा कोड लौटाता है, "यह फ़ाइल मौजूद नहीं है।", जो वह संदेश है जिसे हमने पहले घोषित किया था।अनियंत्रित अपवाद फेंकें
तो, मान लीजिए कि हम एक
StringIndexOutOfBounds
फेंकना चाहते हैं अपवाद अगर हमारा प्रोग्राम एक स्ट्रिंग में एक इंडेक्स वैल्यू तक पहुंचने का प्रयास करता है जो मौजूद नहीं है। हम इस कोड का उपयोग करके ऐसा कर सकते हैं:
क्लास मेन {सार्वजनिक स्थैतिक शून्य आउटऑफबाउंड्स () {फेंक नया StringIndexOutOfBoundsException ("यह इंडेक्स मान अमान्य है।"); } सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] args) {outOfBounds (); }}पूर्व>
हमारे कोड में बहुत कुछ चल रहा है, तो चलिए इसे तोड़ते हैं। सबसे पहले, हमने मेन नामक एक वर्ग घोषित किया है जिसमें इस कार्यक्रम के लिए हमारा कोड मौजूद है।
फिर हमने
outOfBounds()
. नाम से एक फंक्शन बनाया है जो, निष्पादित होने पर, एकStringIndexOutOfBounds
throw फेंक देगा अपवाद। संदेशThis index value is invalid.
अपवाद के साथ होगा। अंत में, हमारे मुख्य कार्यक्रम में, हमoutOfBounds()
. को कॉल करते हैं फ़ंक्शन, जो तब लौटाता है:
थ्रेड में अपवाद "मुख्य" java.lang.StringIndexOutOfBoundsException:यह अनुक्रमणिका मान अमान्य है।
at Main.outOfBounds(Main.java:3)
. पर
at Main.main(Main.java:7)
इस उदाहरण में, हमने एक अनियंत्रित अपवाद फेंका है। यह आमतौर पर आवश्यक नहीं है, जैसा कि हमने पहले चर्चा की थी, लेकिन हमने आपको सिंटैक्स दिखाने के लिए वैसे भी एक अनियंत्रित अपवाद फेंक दिया है।
निष्कर्ष
चेक किए गए अपवादों को संभालना जावा में रखरखाव योग्य कोड लिखने का एक महत्वपूर्ण हिस्सा है। जावा में, थ्रो एंड थ्रो कीवर्ड का उपयोग अपवादों को फेंकने और संभालने के लिए किया जाता है।
इस ट्यूटोरियल में जावा में थ्रो एंड थ्रो कीवर्ड का उपयोग करने का तरीका बताया गया है, और इस प्रक्रिया को सीखने में आपकी मदद करने के लिए प्रासंगिक उदाहरण प्रदान किए गए हैं। इस ट्यूटोरियल को पढ़ने के बाद, आप जावा में एक पेशेवर की तरह अपवादों को फेंकना और संभालना शुरू करने के लिए तैयार हैं!