2010-08-14 14 views
13

मैं अपने परीक्षण के लिए अध्ययन कर रहा हूँ ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में और मैं अगर वहाँ किसी भी मामले सोच रहा था क्या इतना कभी कि निम्नलिखित कोड पर विचार:क्या ऐसा कोई मामला है जब आखिरकार कोशिश करें अंततः ब्लॉक नहीं किया जाएगा?

try { 
    do something 
} catch (someException e) { 

} finally { 
    do something 
} 

finally ब्लॉक निष्पादित नहीं होगा?

+13

प्लग खींचना इसे करना चाहिए। – PreciousBodilyFluids

+5

http://thedailywtf.com/Articles/My-Tales.aspx –

उत्तर

17

हां। यदि आप जावा वीएम को क्रैश करते हैं या अन्यथा मूल कोड के माध्यम से चीजों को मकसद करते हैं, तो प्रोग्राम को समाप्त करने का कारण बनता है, या लूप/try ब्लॉक के अंदर अनन्त रूप से प्रतीक्षा करें।

वे केवल तीन मामले हैं जो finally ब्लॉक को निष्पादित करने से बचेंगे।

+3

कॉलिंग सिस्टम.एक्सिट या कंप्यूटर की मोड़ शायद "प्रोग्राम को समाप्त करने के कारण" के रूप में गिना जाता है ... :-) –

+0

@ रasmस काज: सहमत। – Borealid

+0

यदि प्रयास ब्लॉक में है, तो आप इस प्रयास/पकड़/आखिरकार वाक्यांश वाले फ़ंक्शन से वापस आते हैं, आखिरकार ब्लॉक अभी भी निष्पादित होगा? – euphoria83

5

यदि आप पर try पर कॉल करते हैं। या ऐसा कुछ करें जो JVM को छोड़ देता है या लटकता है (जैसे डेडलॉक)। अन्यथा - नहीं।

+0

जेएनआई शायद, हालांकि। –

2

जावा भाषा विशिष्टता guarantees जो अंततः प्रयास-कथन पूर्ण होने से पहले लागू किया जाता है।

कोशिश कथन सामान्य कारणों से पूरा नहीं हो सकता है, जो बोरेलिद के उत्तर में उल्लिखित हैं।

+1

"आखिरकार कोशिश-बयान पूरा होने से पहले आह्वान किया जाता है" ??? "पहले" नहीं होना चाहिए "कब" –

+2

एक कोशिश- * कथन * में कोशिश करें- * ब्लॉक *, किसी भी पकड़ ब्लॉक, और वैकल्पिक रूप से अंततः ब्लॉक। – meriton

0

अंततः ब्लॉक को निष्पादित किया जाएगा यदि नियंत्रण प्रयास या पकड़ ब्लॉक से बाहर आता है।

  • बाहर निकलने के बयान लिख कर, या

  • अनंत लूप आदि

तो अंत में इच्छा ब्लॉक: क्या आप कुछ कैसे नियंत्रण को रोकने के लिए इन ब्लॉकों से बाहर आने के प्रबंधन करते हैं निष्पादित नहीं किया गया। आम तौर पर हम "क्लीनअप" उद्देश्य के लिए अंत में ब्लॉक लिखते हैं।

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

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