2013-02-12 65 views
7

मेरे काम पर मुझे कुछ सी # परियोजनाओं को बनाए रखना है। मूल डेवलपर अब और आसपास नहीं है।अजीब अपवाद हैंडलिंग डमी निर्देश

try 
{ 
    //some Code 
} 
catch 
{ 
    0.ToString(); 
} 

के लिए 0.ToString() क्या है: हाल ही में मैंने कुछ अजीब कोड ज्यादातर इस तरह की स्थितियों में पाया देखा? कोड के अधिकांश तनाव में लिखा गया था, इसलिए मैं दो संभावनाएं के बारे में सोच सकते हैं:

  • यह एक प्लेसहोल्डर (जैसे //TODO), जिसके लिए पता करने के लिए जहाँ आप कुछ सामान को ठीक करने की क्या ज़रूरत है खोजा जा सकता है है।
  • खाली पकड़ क्लॉज के लिए संकलन करते समय चेतावनियों से बचने के लिए यह है।

क्या कोई अन्य USECASE या कि में भावना है? क्या यह अच्छी/खराब कोडिंग शैली या अभ्यास है? चूंकि यह निर्देश कुछ भी नहीं करता है, क्या इसका प्रदर्शन पर कुछ छोटा असर होगा या क्या संकलक इसे हटा देगा?

+7

एकमात्र तार्किक कारण कुछ कोड होना होगा ताकि आप इसे अपनाने के लिए एक ब्रेकपॉइंट सेट कर सकें, हालांकि इसे करने का कोई अच्छा तरीका नहीं है; पी – leppie

+0

मुझे लगता है कि ओ 'ऑब्जेक्ट' है ' null' मूल्य और वहाँ 'NullReferenceException' –

+0

के लिए एक ब्रेकपाइंट है ऐसा लगता है कि मूल प्रोग्रामर जाना चाहिए था कुछ परीक्षण ... यही कारण है कि डिबग ब्रेकप्वाइंट धारक भी कोई अपवाद ... –

उत्तर

2

टिप्पणियों के अनुसार, कोड नमूने में एक अजीब बात और एक बुरी चीज है।

0.ToString(); 

लगभग निश्चित रूप से है कि कोड की एक पंक्ति है जहां एक डीबगर ब्रेकपॉइंट रख सकता है। यह इस उद्देश्य के लिए उपयोग की जाने वाली अजनबी रेखाओं में से एक है। यह संभावना है कि इस लाइन को डीबगिंग सत्र के बाद अनजाने में किया गया था।

कि से अलग खाली catch ब्लॉक है, जो आम तौर पर एक अच्छा विचार नहीं है। रयान गेट्स इसके लिए एक अच्छा जवाब देता है, इसलिए मैं उस बिंदु पर विस्तार नहीं कर रहा हूं। लेकिन विडंबना यह है कि यदि उचित पकड़ ब्लॉक था, तो ब्रेकपॉइंट रखने के लिए कोड की एक पंक्ति होगी।

1

जैसे कुछ करने के बेहतर तरीके हैं, ऐसा करने के लिए कोई अन्य उपयोग या समझदार कारण नहीं है। यह एक खराब कोडिंग अभ्यास है। आपके कोड को कोई अपवाद नहीं पकड़ना चाहिए जिसे वह संभाल नहीं सकता है।

सबसे अच्छा मार्ग इसे हटाने के लिए है। जब एक अपवाद फेंक दिया जाता है, तो आपको उस प्रयोग को समझने की आवश्यकता होती है। फिर और केवल तभी आप उचित चेक और/या विशिष्ट अपवाद हैंडलिंग कोड जोड़ सकते हैं।

प्रश्न में कोड swallowing the exception, which is hazardous to your health का एक उदाहरण है।