2010-09-25 21 views
41

कोशिश-पकड़ और फेंकने के बीच अंतर क्या है। इनका उपयोग कब करें?जावा में प्रयास करें और फेंकने के बीच अंतर

कृपया मुझे बताएं।

+2

@ user393043, क्या आपने दस्तावेज़ों से परामर्श लिया है और अभी भी उलझन में हैं? या आपने पहले स्थान पर दस्तावेज़ों को भी नहीं देखा है? –

+5

डॉक्स? क्या दस्तावेज़? :-P –

+0

[फेंकता या कोशिश-पकड़] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/3203297/throws-or-try-catch) –

उत्तर

63
  • try ब्लॉक एक संवेदनशील कोड जो अपवाद
  • फेंक कर सकते हैं catch ब्लॉक जब भी (प्रकार पकड़ा की) एक अपवाद कोशिश ब्लॉक
  • finally ब्लॉक कहा जाता है में फेंक दिया जाता है उपयोग किया जाएगा निष्पादित करेंगे कोशिश/पकड़ ब्लॉक के बाद हर मामले में। भले ही अपवाद पकड़ा न जाए या यदि आपके पिछले ब्लॉक निष्पादन प्रवाह को तोड़ दें।
  • throw कीवर्ड आपको एक अपवाद फेंकने की अनुमति देगा (जो निष्पादन प्रवाह को तोड़ देगा और catch ब्लॉक में पकड़ा जा सकता है)।
  • विधि प्रोटोटाइप में throws कीवर्ड का उपयोग यह निर्दिष्ट करने के लिए किया जाता है कि आपकी विधि निर्दिष्ट प्रकार के अपवाद फेंक सकती है। यह तब उपयोगी होता है जब आपने अपवाद (अपवाद जिसे आपको संभालना है) चेक किया है कि आप अपनी वर्तमान विधि में नहीं पकड़ना चाहते हैं।

संसाधन:


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

+0

आपने * थ्रो * क्लॉज को संबोधित नहीं किया है। मुझे आपको ऐसा करने की ज़रूरत है ताकि जब वह मेरा जवाब स्वीकार कर लेता है, तो मैं उसे आपके पास देख सकता हूं :) – Dave

+0

@ डेव, करेंगे: पी –

5

कोशिश करें/पकड़ें और फेंक दें विभिन्न उद्देश्यों के लिए हैं। इसलिए वे एक-दूसरे के लिए वैकल्पिक नहीं हैं लेकिन वे पूरक हैं।

  1. यदि आपने अपने कोड में कुछ चेक अपवाद फेंक दिया है, तो यह पदानुक्रम को कॉल करने वाले कोडों में कुछ प्रयास/पकड़ के अंदर होना चाहिए।

  2. इसके विपरीत, आपको कोड के अंदर कुछ फेंक क्लॉज (आपका कोड या एपीआई कॉल) है जो जांच अपवाद फेंकने पर केवल प्रयास/पकड़ ब्लॉक की आवश्यकता है।

कभी कभी, आप अपवाद फेंकने के लिए चाहते हो सकता है अगर विशेष स्थिति आप कोड ब्लॉक बुला में संभाल और कुछ मामलों में कुछ अपवाद कैच ब्लॉक संभालने के लिए और ब्लॉक बुला में संभालने के लिए एक समान या भिन्न अपवाद फिर से फेंक करना चाहते हैं जो हुआ ।

26

यदि आप निम्न उदाहरण निष्पादित करते हैं, तो आप थ्रो और कैच ब्लॉक के बीच का अंतर जानेंगे।

सामान्य शब्दों में:

पकड़ ब्लॉक अपवाद

संभाल लेंगे फेंकता उसकी कॉलर को त्रुटि पारित करेंगे।

निम्न उदाहरण में, त्रुटि throwsMethod() में होता है, लेकिन यह catchMethod() में नियंत्रित किया जाता है।

public class CatchThrow { 

private static void throwsMethod() throws NumberFormatException { 
    String intNumber = "5A"; 

    Integer.parseInt(intNumber); 
} 

private static void catchMethod() { 
    try { 

     throwsMethod(); 

    } catch (NumberFormatException e) { 
     System.out.println("Convertion Error"); 
    } 

} 

public static void main(String[] args) { 
    // TODO Auto-generated method stub 

    catchMethod(); 
} 

} 
+0

उदाहरण के लिए, यदि आप "निजी स्थैतिक शून्य फेंकता है" विधि() संख्याफॉर्मेट एक्सेप्शन "को" निजी स्थैतिक शून्य फेंकता है विधि() इंडेक्सऑटऑफबाउंड्स एक्सेप्शन फेंकता है ", यह एक ही परिणाम उत्पन्न करता है। –

-1

कोशिश - अंत में अपवाद को संभालने के लिए - - संवेदनशील कोड पकड़ जोड़े हमेशा मार डाला है कि क्या अपवाद पकड़ा या नहीं। Try -catch के साथ संबद्ध। संसाधन को बंद करने के लिए प्रयुक्त होता है जिसे हमने फेंक ब्लॉक में खोला है - मैन्युअल रूप से JVM को हमारे बनाए गए अपवाद को सौंपने के लिए। अनुकूलित अपवाद फेंकने के लिए प्रयुक्त - कॉलर विधि या मुख्य विधि को अपवाद हैंडलिंग की ज़िम्मेदारी का प्रतिनिधित्व करने के लिए।

3

ये सभी कीवर्ड जावा में अपवाद हैंडलिंग अवधारणा से संबंधित हैं, पकड़ें और फेंकें हैं। एक अपवाद एक घटना है जो कार्यक्रमों के निष्पादन के दौरान होती है। अपवाद एक आवेदन के सामान्य प्रवाह को बाधित करता है। अपवाद हैंडलिंग अपवाद को संभालने के लिए उपयोग की जाने वाली एक तंत्र है ताकि आवेदन के सामान्य प्रवाह को बनाए रखा जा सके। अपवाद को संभालने के लिए प्रयास-पकड़ ब्लॉक का उपयोग किया जाता है। एक कोशिश ब्लॉक में, हम कोड लिखते हैं जो अपवाद फेंक सकता है और पकड़ ब्लॉक में हम उस अपवाद को संभालने के लिए कोड लिखते हैं। कीवर्ड को फेंकने के लिए स्पष्ट रूप से अपवाद फेंकने के लिए प्रयोग किया जाता है। आम तौर पर, उपयोगकर्ता परिभाषित अपवादों को फेंकने के लिए कीवर्ड को फेंक दिया जाता है।

अधिक जानकारी के लिए Java tutorial for beginners पर जाएं।

1

दूसरों ने पहले से ही पूरी तरह से जवाब दिए हैं, लेकिन यदि आप और भी अधिक जानकारी की तलाश में हैं, तो ओरेकल जावा ट्यूटोरियल हमेशा एक अच्छा संसाधन होते हैं। अपवादों के लिए जावा ट्यूटोरियल यहां दिया गया है, जिसमें आपके सभी प्रश्नों को बहुत विस्तार से शामिल किया गया है; https://docs.oracle.com/javase/tutorial/essential/exceptions/index.html

संबंधित मुद्दे