हाँ, अंत में ब्लॉक हमेशा चलाता है ... को छोड़कर जब:
- धागा चलाने की कोशिश करें-पकड़ने के अंत में ब्लॉक मारे गए या बाधित
- आप
System.exit(0);
- का उपयोग किया जाता है अंतर्निहित वीएम है किसी अन्य तरीके से नष्ट कर दिया
- अंतर्निहित हार्डवेयर किसी तरह
इसके अलावा व्यर्थ है सहयोगी, अगर आपके आखिरकार ब्लॉक में एक विधि एक अपरिचित अपवाद फेंकता है, तो इसके बाद कुछ भी निष्पादित नहीं किया जाएगा (यानी। अपवाद फेंक दिया जाएगा क्योंकि यह किसी भी अन्य कोड में होगा)। एक बहुत ही आम मामला जहां यह होता है java.sql.Connection.close()
है।
एक तरफ, मैं अनुमान लगा रहा हूं कि आपके द्वारा उपयोग किए गए कोड नमूने केवल एक उदाहरण है, लेकिन आखिरकार ब्लॉक के अंदर वास्तविक तर्क डालने से सावधान रहें। आखिरकार ब्लॉक संसाधन क्लीन-अप (बंद डीबी कनेक्शन, फाइल हैंडल इत्यादि को बंद करने) के लिए है, न कि चलने वाले तर्क के लिए। यदि इसे ट्राइक-कैच ब्लॉक से पहले करना चाहिए, तो किसी अपवाद को फेंकने वाले किसी चीज़ से दूर, क्योंकि आपका इरादा लगभग निश्चित रूप से समान रूप से समान होता है।
क्योंकि ऐसी परिस्थितियां हैं जहां व्यवहार की अपेक्षा नहीं की जाती है, जैसा कि @GaryF – jax
द्वारा इंगित किया गया है, यह ध्यान देने योग्य है कि अंतिम ब्लॉक निष्पादित नहीं हो सकता है अगर यह अपवाद फेंकता है, या वापसी करता है। –