2010-01-08 12 views
14

क्या कोई जावा में रनटाइम अपवादों को संभालने का तरीका बता सकता है?जावा में रनटाइम अपवादों को संभालना

+0

मुझे लगता है कि एसओ के गैर-स्वीकार्यकर्ताओं ने अब तक यह पता लगाया है कि वे खाली खतरे हैं। हम मॉड पॉइंट चाहते हैं! – danben

+1

मैंने कहीं भी स्वीकार बटन कभी नहीं देखा? – Ravikanth

+0

यह उत्तर के बगल में बड़ा टिक/सुधार चिह्न है। – Gordon

उत्तर

34

यह एक नियमित रूप से अपवाद हैंडलिंग से अलग नहीं है:

try { 
    someMethodThatThrowsRuntimeException(); 
} catch (RuntimeException ex) { 
    // do something with the runtime exception 
} 
+0

रनटाइम अपवादों को पकड़ सकता है ..? – Ravikanth

+3

बेशक! 'थ्रोबल' के सभी उप-वर्गों को पकड़ा जा सकता है। –

+0

मुझे इस प्रश्न के साथ कोई समस्या नहीं दिखाई दे रही है - मेरे पास एक रननेबल था जिसे मुझे संदेह था कि मुझे रनटाइम त्रुटि हो रही थी और मुझे पता नहीं था कि आप किसी भी कोड को कोशिश/पकड़ में लपेट सकते हैं और रनटाइम अपवाद पकड़ जोड़ सकते हैं। I Googled'Android हैंडलिंग रनटाइम अपवाद ', यह पहला सवाल था जो आया था और यह उत्तर प्रदान किया गया था जो मुझे चाहिए था। निश्चित रूप से यह बिल्कुल ठीक है कि कैसे काम करना चाहिए? – Mitch

4

आप अपवाद के प्रकार फेंक दिया जा सकता है पता है, तो आप यह स्पष्ट रूप से पकड़ सकते थे। आप Exception भी पकड़ सकते हैं, लेकिन इसे आम तौर पर बहुत बुरा अभ्यास माना जाता है क्योंकि आप तब सभी प्रकार के अपवादों का इलाज करेंगे।

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

+0

छोड़कर, शायद, जब कोई कस्टम घटक RuntimeException फेंक रहा है क्योंकि यह नेटवर्क पर किसी निश्चित होस्ट तक नहीं पहुंच सकता है और यह आपके एंड्रॉइड ऐप को क्रैश कर रहा है। –

2

आप उन्हें किसी अन्य अपवाद की तरह पकड़ते हैं।

try { 
    somethingThrowingARuntimeException() 
} 
catch (RuntimeException re) { 
    // Do something with it. At least log it. 
} 
1
नहीं

यकीन है कि अगर आप जावा में RuntimeException के लिए सीधे बात कर रहे हैं, इसलिए मैं आपको रन-टाइम अपवादों के बारे में बात कर रहे हैं मान लेंगे।

जावा में अपवाद हैंडलिंग का मूल विचार यह है कि आप जिस कोड को उम्मीद करते हैं वह नीचे दिए गए विशेष विवरण में अपवाद उठा सकता है।

try { 
    // Do something here 
} 

फिर, आप अपवाद को संभालते हैं।

catch (Exception e) { 
    // Do something to gracefully fail 
} 

आप एक अपवाद उठाया है चाहे निष्पादित करने के लिए कुछ बातें की जरूरत है, finally जोड़ें।

finally { 
    // Clean up operation 
} 

सभी एक साथ ऐसा लगता है।

try { 
    // Do something here 
} 
catch (AnotherException ex) { 
} 
catch (Exception e) { //Exception class should be at the end of catch hierarchy. 
} 
finally { 
} 
+0

क्या हम रनटाइम अपवाद पकड़ सकते हैं? यह कैसे संभव है? रनटाइम अपवाद जानने के साथ, हम इसे प्रोग्रामिक रूप से कैसे पकड़ते हैं? – Ravikanth

+0

आप किसी भी प्रकार के अपवाद को पकड़ने के लिए 'पकड़ (अपवाद टाइप नाम) {} 'का उपयोग कर सकते हैं। अन्यथा, आप सभी अपवादों को पकड़ने के लिए 'पकड़ {}' का उपयोग कर सकते हैं, या सभी अपवादों को पकड़ने के लिए 'पकड़ (अपवाद नाम) {} '(और उनके बारे में जानकारी उनके लिए सुलभ हो सकती है। –

+0

@Ed: यह सही है। लेकिन अगर मुझे सर्वर (लोडिंग समस्या) पर त्रुटि मिली है। यह रनटाइम अपवाद है। हम इस अपवाद को प्रोग्रामिक रूप से कैसे पकड़ेंगे? क्या यह संभव है? – Ravikanth

-1
try { 
      // a snippet resulting in Runtime Excception 
     } catch (Throwable e) { 
      e.printStackTrace(); 
      //Sys out or some logging 
     } 

इस तरह हम क्रम Excception संभाल कर सकते हैं।

+3

सर्वोत्तम अभ्यास के रूप में, इसे "थ्रोबल" पकड़ने की सलाह नहीं दी जाती है। त्रुटियां भी फेंकने योग्य होती हैं और आपको त्रुटियों को नहीं पकड़ना चाहिए, जो जेवीएम मुद्दों की पहचान करता है। इसके बजाय अपवादों को पकड़ें। – lemiorhan

+0

@otuzbesli आपकी सलाह के लिए धन्यवाद। – chetan

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