यह एक संबंधित प्रश्न है: क्या खराब शैली / खतरनाक रिटर्न के बाद काम करने के लिए अंत में क्लॉज का उपयोग किया जाता है?
संदर्भित क्यू में, अंत में कोड का उपयोग किए गए संरचना और पूर्व-लाने की आवश्यकता से संबंधित है। मेरा सवाल थोड़ा अलग है, और मेरा मानना है कि यह व्यापक दर्शकों के लिए जर्मे है। मेरा विशेष उदाहरण एक C # winform ऐप है, लेकिन यह C ++ / Java अंत में उपयोग के लिए भी लागू होगा।
मैं काफी कुछ कोशिश कर रहा हूँ, जो अंततः-ब्लॉक को पकड़ने की कोशिश कर रहा हूँ, जहाँ बहुत से कोड असंबंधित हैं अपवाद और अपवाद हैंडलिंग / क्लीनअप को ब्लॉक के भीतर दफन किया गया है। और मैं अपने पूर्वाग्रह को स्वीकार करूंगा कि बहुत तंग कोशिश-कैच-अंततः ब्लॉक के साथ कोड के अपवाद और हैंडलिंग से संबंधित हैं। यहाँ कुछ उदाहरण हैं जो मैं देख रहा हूँ।
कोशिश करें कि ब्लॉक में बहुत सारी प्रारंभिक कॉल और चर होंगे जो उस कोड तक ले जा सकते हैं जो फेंक सकता है। लॉगिंग जानकारी सेटअप में जाएगी और साथ ही कोशिश ब्लॉक में चलेगी।
अंत में ब्लॉक में फॉर्म / मॉड्यूल / कंट्रोल फॉर्मेटिंग कॉल होंगे (ऐप को समाप्त करने के बारे में होने के बावजूद, कैच ब्लॉक में व्यक्त किया गया है), साथ ही पैनल जैसे नए ऑब्जेक्ट भी बना रहे हैं।
मोटे तौर पर:
मेथडनाम (...) { प्रयत्न { // विधि के लिए बहुत सारे कोड ... // कोड जो फेंक सकता है ... // विधि और वापसी के लिए बहुत सारे कोड ... } पकड़ (कुछ) {// आउटलेट अपवाद} आखिरकार { // कुछ सफाई अपवाद के कारण, चीजों को बंद करना // उस सामान के लिए अधिक कोड जो बनाया गया था (अनदेखी कि किसी भी अपवाद को फेंक दिया जा सकता है) ... // शायद कुछ और वस्तुओं का निर्माण करें } }
कोड काम करता है, इसलिए इसका कुछ मूल्य है। यह अच्छी तरह से समझाया नहीं गया है और तर्क थोड़ा जटिल है। मैं (दर्द से) शिफ्टिंग कोड के साथ-साथ रिफैक्टिंग के जोखिमों से परिचित हूं, इसलिए मेरा प्रश्न समान रूप से संरचित कोड के साथ दूसरों के अनुभव को जानना चाहता है।
क्या खराब शैली बदलाव करने को सही ठहराती है? क्या इसी तरह की स्थिति से किसी को बुरी तरह से जलाया गया है? क्या आप उस बुरे अनुभव का विवरण साझा करना चाहेंगे? इसे छोड़ दें क्योंकि मैं अति-प्रतिक्रिया कर रहा हूं और यह शैली का बुरा नहीं है? चीजों को बाँधने के रखरखाव लाभ प्राप्त करें?
finally
C # में क्या होता है)। C ++ समतुल्य क्या है? जो मैं सोच रहा हूं कि कोड के बाद कोड है catch
, और जो C # के बाद कोड के लिए समान लागू होता है finally
।
Environment.FailFast()
; यदि आपके पास कोई अनकहा अपवाद नहीं है, तो इसे निष्पादित नहीं किया जा सकता है। और यह और भी अधिक जटिल हो जाता है यदि आपके पास एक इट्रेटर ब्लॉक है जिसके साथ finally
आप मैन्युअल रूप से पुनरावृति करते हैं।
finally
। सभी अच्छे उपयोग आरएआई / आरआरआईडी / एसबीआरएम (जो भी आपको पसंद हो) के अंतर्गत आते हैं।