Avatar ·

क्या finally ब्लॉक हमेशा चलता है? JVM और System.exit() के जाल

सभी को नमस्ते! मैं Java में नया हूँ और अपवाद प्रबंधन को समझने की कोशिश कर रहा हूँ। मुझे `finally` ब्लॉक को लेकर भ्रम है। पाठ्यपुस्तकों में लिखा है कि यह हमेशा चलता है, चाहे अपवाद हो या न हो। लेकिन मुझे कुछ उदाहरण मिले जहाँ ऐसा नहीं लगता। उदाहरण के लिए, यह कोड: ```java public class FinallyTest { public static void main(String[] args) { try { System.out.println("try में"); System.exit(0); } catch (Exception e) { System.out.println("catch में"); } finally { System.out.println("finally में"); } } } ``` मुझे उम्मीद थी कि "finally में" दिखेगा, लेकिन प्रोग्राम बिना यह आउटपुट दिखाए समाप्त हो गया। क्यों? `System.exit(0)` तो कोई अपवाद नहीं है, यह सामान्य समाप्ति है। और एक और उदाहरण। अगर `try` ब्लॉक में `return` है, तो क्या `finally` फिर भी चलेगा? मैंने सुना है कि हाँ, लेकिन पुष्टि चाहता हूँ। और अगर `finally` में भी अपवाद फेंका जाए तो क्या होगा? क्या यह `try` के अपवाद को ओवरराइट कर देगा?