जावा फेंक और कीवर्ड फेंकता है

इस ट्यूटोरियल में, हम उदाहरणों की मदद से अपवाद हैंडलिंग के लिए थ्रो एंड थ्रो कीवर्ड का उपयोग करना सीखेंगे।

जावा में, अपवादों को दो प्रकारों में वर्गीकृत किया जा सकता है:

  • अनियंत्रित अपवाद: वे संकलन समय पर जाँच नहीं कर रहे हैं लेकिन रन-time.For उदाहरण में: ArithmeticException, NullPointerException, ArrayIndexOutOfBoundsException, के तहत अपवाद Errorवर्ग, आदि
  • जाँच किए गए अपवाद: उन्हें संकलन-समय पर जांचा जाता है। उदाहरण के लिए, IOException, InterruptedException, आदि

जाँच और अनियंत्रित अपवादों के बारे में विस्तार से जानने के लिए जावा अपवादों का संदर्भ लें।

आमतौर पर, हमें अनियंत्रित अपवादों को संभालने की आवश्यकता नहीं है। ऐसा इसलिए है क्योंकि प्रोग्रामिंग त्रुटियों के कारण अनियंत्रित अपवाद उत्पन्न होते हैं। और, उन्हें संभालने के बजाय उन्हें सही करना एक अच्छा अभ्यास है।

यह ट्यूटोरियल अब इस बात पर ध्यान केंद्रित करेगा कि चेक किए गए अपवादों का उपयोग कैसे करें throwऔर throws

जावा कीवर्ड को फेंकता है

हम throwsइस प्रकार के अपवादों को घोषित करने के लिए विधि घोषणा में कीवर्ड का उपयोग करते हैं जो इसके भीतर हो सकते हैं।

इसका सिंटैक्स है:

 accessModifier returnType methodName() throws ExceptionType1, ExceptionType2… ( // code ) 

जैसा कि आप उपरोक्त वाक्य रचना से देख सकते हैं, हम throwsकई अपवादों को घोषित करने के लिए उपयोग कर सकते हैं ।

उदाहरण 1: जावा कीवर्ड को फेंकता है

 import java.io.*; class Main ( public static void findFile() throws IOException ( // code that may produce IOException File newFile=new File("test.txt"); FileInputStream stream=new FileInputStream(newFile); ) public static void main(String() args) ( try( findFile(); ) catch(IOException e)( System.out.println(e); ) ) ) 

आउटपुट

 java.io.FileNotFoundException: test.txt (ऐसी कोई फ़ाइल या निर्देशिका नहीं) 

जब हम इस प्रोग्राम को चलाते हैं, यदि फ़ाइल test.txtमौजूद नहीं है, तो क्लास FileInputStreamफेंकता है ।FileNotFoundExceptionIOException

यदि कोई विधि अपवादों को नहीं संभालती है, तो अपवाद के प्रकार जो उसके भीतर हो सकते हैं, उन्हें throwsक्लॉज़ में निर्दिष्ट किया जाना चाहिए ताकि कॉल स्टैक में आगे आने वाली विधियाँ उन्हें संभाल सकें या उन्हें throwsस्वयं कीवर्ड का उपयोग करके निर्दिष्ट कर सकें।

यह findFile()विधि निर्दिष्ट करती है कि IOExceptionफेंकी जा सकती है। main()विधि इस पद्धति को कॉल करती है और अपवाद को संभालती है यदि इसे फेंक दिया जाता है।

कई अपवादों को फेंकना

यहां बताया गया है कि हम throwsकीवर्ड का उपयोग करके कई अपवाद कैसे फेंक सकते हैं ।

 import java.io.*; class Main ( public static void findFile() throws NullPointerException, IOException, InvalidClassException ( // code that may produce NullPointerException… … … // code that may produce IOException… … … // code that may produce InvalidClassException… … … ) public static void main(String() args) ( try( findFile(); ) catch(IOException e1)( System.out.println(e1.getMessage()); ) catch(InvalidClassException e2)( System.out.println(e2.getMessage()); ) ) ) 

इधर, findFile()विधि निर्दिष्ट करता है कि फेंक कर सकते हैं NullPointerException, IOExceptionऔर InvalidClassExceptionअपने में throwsखंड।

ध्यान दें कि हमने संभाला नहीं है NullPointerException। ऐसा इसलिए है क्योंकि यह एक अनियंत्रित अपवाद है। इसे throwsक्लॉज में निर्दिष्ट करना और इसे संभालना आवश्यक नहीं है ।

कीवर्ड बनाम फेंकता है कोशिश … पकड़ … अंत में

कई तरीके हो सकते हैं जो अपवाद पैदा कर सकते हैं। try… catchप्रत्येक विधि के लिए लिखना थकाऊ होगा और कोड लंबा और कम पठनीय हो जाएगा।

throws यह तब भी उपयोगी है जब आपने अपवाद (एक अपवाद जिसे संभाला जाना चाहिए) की जाँच की है जिसे आप अपनी वर्तमान पद्धति में पकड़ना नहीं चाहते हैं।

जावा कीवर्ड फेंक देते हैं

throwकीवर्ड स्पष्ट रूप से एक भी अपवाद फेंकने के लिए प्रयोग किया जाता है।

जब एक अपवाद को फेंक दिया जाता है, तो प्रोग्राम निष्पादन का प्रवाह tryब्लॉक से ब्लॉक में स्थानांतरित हो जाता है catch। हम throwएक विधि के भीतर कीवर्ड का उपयोग करते हैं ।

इसका सिंटैक्स है:

 throw throwableObject;

एक फेंकने योग्य वस्तु वर्ग Throwableया वर्ग के उपवर्ग का एक उदाहरण है Throwable

उदाहरण 2: जावा थ्रो कीवर्ड

 class Main ( public static void divideByZero() ( throw new ArithmeticException("Trying to divide by 0"); ) public static void main(String() args) ( divideByZero(); ) ) 

आउटपुट

 धागे में अपवाद "मुख्य" java.lang.ArithmeticException: Main.divideByZero (Main.java:3) पर Main.main (Main.java:7) से बाहर निकलने की स्थिति 1 पर 0 से विभाजित करने का प्रयास 

इस उदाहरण में, हम स्पष्ट रूप से एक फेंक रहे हैं ArithmeticException.

नोट: ArithmeticException एक अनियंत्रित अपवाद है। आमतौर पर अनियंत्रित अपवादों को संभालना आवश्यक नहीं है।

उदाहरण 3: फेंक दिया गया अपवाद अपवाद

 import java.io.*; class Main ( public static void findFile() throws IOException ( throw new IOException("File not found"); ) public static void main(String() args) ( try ( findFile(); System.out.println("Rest of code in try block"); ) catch (IOException e) ( System.out.println(e.getMessage()); ) ) ) 

आउटपुट

 फाइल नहीं मिली 

यह findFile()विधि उस IOExceptionसंदेश के साथ फेंकता है जिसे हमने इसके निर्माता को दिया था।

ध्यान दें कि चूंकि यह एक चेक किया गया अपवाद है, इसलिए हमें इसे throwsक्लॉज में निर्दिष्ट करना होगा ।

इस पद्धति को कॉल करने वाले तरीकों findFile()को या तो इस अपवाद को संभालने की आवश्यकता है या इसे throwsस्वयं कीवर्ड का उपयोग करके निर्दिष्ट करें ।

हमने इस अपवाद को main()विधि में संभाला है । जब एक अपवाद फेंक दिया जाता है , तो प्रोग्राम निष्पादन का प्रवाह tryब्लॉक से catchब्लॉक में स्थानांतरित हो जाता है। इसलिए, tryब्लॉक के बाकी कोड को छोड़ दिया जाता है और catchब्लॉक में स्टेटमेंट निष्पादित किए जाते हैं।

दिलचस्प लेख...