ए RuntimeException
कोड द्वारा फेंक दिया जा सकता है। दूसरे शब्दों में, संकलक आसानी से भविष्यवाणी नहीं कर सकता कि किस प्रकार का कोड इसे फेंक सकता है। को catch(Exception e)
ब्लॉक द्वारा पकड़ा जा सकता है।
IOException
, हालांकि, एक चेक अपवाद है - केवल विधि कॉल जिन्हें फेंकने के लिए घोषित किया जाता है, ऐसा कर सकता है। कंपाइलर (तर्कसंगत) विश्वास कर सकता है कि यह तब तक संभव नहीं हो सकता जब तक कि विधि कॉल नहीं किया जाता है जिसे इसे फेंकने के लिए घोषित किया जाता है।
जावा संकलक बस "बिल्कुल कोशिश ब्लॉक के भीतर कोई कोड नहीं है" स्थिति पर विचार नहीं करता है - यह हमेशा, सभी उचित परिदृश्यों में वहाँ के रूप में कोड होगा जो सकता है आप अनियंत्रित अपवाद को पकड़ने के लिए अनुमति देता है संभावित रूप से एक अनचेक अपवाद फेंक दें।
JLS की
section 14.21 से
:
एक कैच ब्लॉक सी पहुंचा जा सकता है iff निम्न में से दोनों सही हैं:
- कोशिश ब्लॉक में कुछ अभिव्यक्ति या फेंक बयान पहुंचा जा सकता है और फेंक कर सकते हैं एक अपवाद जिसका प्रकार कैच क्लॉज सी के पैरामीटर के लिए असाइन करने योग्य है। (एक अभिव्यक्ति को पहुंचने योग्य माना जाता है यदि इसमें शामिलतमतम कथन में पहुंच योग्य है।)
- कोई कथन ब्लॉक ए नहीं है ch कि सी के पैरामीटर का प्रकार ए के पैरामीटर के प्रकार के उप-वर्ग के समान है।
यकीनन संकलक का एहसास होना चाहिए अपने पहले मामले में कोशिश ब्लॉक के भीतर कोई भाव देखते हैं कि ... ऐसा लगता है कि यह अभी भी एक नहीं पहुंचा जा सकता पकड़ खंड है की तरह मेरे लिए,।
संपादित करें: के रूप में टिप्पणी में बताया गया है, section 14.20 इस में शामिल हैं:
यह एक संकलन समय त्रुटि अगर एक catch
खंड कैच अपवाद प्रकार जाँच E1 है, लेकिन कोई अपवाद प्रकार की जाँच की E2 वहां मौजूद इस तरह के जो निम्न पकड़ के सभी:
- E2 <: E1
try
ब्लॉक catch
खंड के लिए इसी E2
- फेंक कर सकते हैं तुरंत enclosing कोशिश बयान का कोई पूर्ववर्ती
catch
ब्लॉक E2 या E2 के महाप्रकार फैल जाती है।
जब तक ई 1 कक्षा अपवाद है।
तो ऐसा लगता है कि यह है कि क्या आप वास्तव में रहे की बेईमानी से चल रहा है, लेकिन कल्पना के रूप में स्पष्ट रूप में यह 14.21 में पहुंच योग्य नहीं पकड़ ब्लॉक के मामले में हो सकता है नहीं है।
स्रोत
2011-05-05 15:01:11
इसका मतलब है कि पकड़ने के लिए कुछ भी नहीं है (कोई त्रुटि नहीं) मुझे समस्या नहीं दिखाई देती है – Neal
आपको जावा भाषा विशिष्टता, या कम से कम एक अच्छा जावा ट्यूटोरियल पढ़ना चाहिए। –