वे अलग करता है, तो
try
-block एक java.lang.Throwable
कि एक java.lang.Exception
नहीं है फेंक, उदाहरण के लिए, क्योंकि यह एक java.lang.Error
ऐसे AssertionError
या OutOfMemoryError
के रूप में है से पूरा करती है।
- कोशिश ब्लॉक अचानक एक नियंत्रण प्रवाह विवरण इस तरह के एक
continue
, break
या return
- पकड़ने ब्लॉक अचानक पूरा करता है का उपयोग कर पूरा करता है (किसी भी फेंकने योग्य फेंक, या एक नियंत्रण प्रवाह विवरण का उपयोग करके)
अधिक आम तौर पर, जावा भाषा गारंटी देता है कि कोशिश-बयान पूरा होने से पहले आखिरकार ब्लॉक को निष्पादित किया जाता है। (ध्यान दें कि यदि कोशिश-कथन पूरा नहीं होता है, तो अंत में कोई गारंटी नहीं है। हार्डवेयर शट डाउन, ओएस शट डाउन, वीएम शटडाउन (उदाहरण के लिए System.exit
के कारण) के लिए कई कारणों से एक कथन पूरा नहीं हो सकता है, थ्रेड इंतज़ार कर (Thread.suspend()
, synchronized
, Object.wait()
, Thread.sleep()
) या अन्यथा व्यस्त होने के (अनंत छोरों, ,,,)।
तो, एक finally
ब्लॉक विधि शरीर के अंत की तुलना में सफाई कार्यों के लिए एक बेहतर जगह है, लेकिन अपने आप में, अभी भी सफाई अपर्याप्तता की गारंटी नहीं दे सकता है।
सुधार: आखिरकार ब्लॉक _is_ निष्पादित किया गया जब java.lang.Error फेंक दिया जाता है। यह सफलतापूर्वक निष्पादित नहीं हो सकता है, लेकिन यह निष्पादित करता है। इसके अलावा, अतिरिक्त con अंततः ब्लॉक के निष्पादन को विफल कर सकते हैं, एक अपूर्ण सूची के लिए मेरा जवाब देखें। – meriton
नोट: यदि कोशिश या पकड़ कोड निष्पादित किया जा रहा है, तो JVM बाहर निकलता है, तो आखिरकार ब्लॉक निष्पादित नहीं हो सकता है। इसी प्रकार, यदि कोशिश या पकड़ कोड निष्पादित करने वाला थ्रेड बाधित या मारे गए हैं, तो आखिर में ब्लॉक जारी नहीं हो सकता है, भले ही एप्लिकेशन पूरी तरह से जारी रहे। - https://docs.oracle.com/javase/tutorial/essential/exceptions/finally.html – Hansa