2009-06-12 20 views
11

मुझे पता है कि यह वास्तव में कोई फर्क नहीं पड़ता है, लेकिन मैं जानना चाहता हूं कि क्या सही है।सी #: क्या आप अपवाद उठाते हैं या फेंक देते हैं?

यदि कोड का एक टुकड़ा throw new SomeKindOfException() का कुछ संस्करण है। क्या हम कहते हैं कि कोड का यह टुकड़ा संभावित रूप से अपवाद बढ़ा सकता है? या एक अपवाद फेंक दो?

कीवर्ड throw है, इसलिए मैं एक तरह से है कि दिशा में झुकाव रहा हूँ, लेकिन एक अपवाद भी एक बहुत प्रयोग किया जाता है बढ़ाने के लिए ...

वे अलग अर्थ के कुछ प्रकार है? क्या उनमें से एक दूसरे पर एक अंतर को निहित करता है? या यह सिर्फ दो शब्द है जिसका अर्थ बिल्कुल वही बात है?

+0

रूबी में संबंधित चर्चा के लिए: http://stackoverflow.com/questions/51021 –

उत्तर

25

सी # शब्दावली में, को ऊपर उठाने की घटनाओं और फेंक अपवाद के संदर्भ में प्रयोग किया जाता है के संदर्भ में प्रयोग किया जाता है।

व्यक्तिगत रूप से, मुझे लगता है कि throw/catch संयोजन raise/catch से अधिक सुंदर है।

+0

आह, ज़ाहिर है, मैं पूरी तरह से सहमत हूं। अब कुल समझ में आता है! इसे साफ़ करने के लिए धन्यवाद :) – Svish

+3

सी # "लिफ्ट" का भी उपयोग करता है, जिसका मतलब है "गैर-शून्य प्रकारों पर ऑपरेटर का एक संक्षिप्त संस्करण प्रदान करें", और "उछाल" का मतलब है "एक स्थानीय चर को बंद करने के क्षेत्र में बदलें कक्षा"। तो सी # में आप चीजें उठा सकते हैं, उठा सकते हैं या उठा सकते हैं, और वे सब कुछ अलग है। –

3

मैं सी # के लिए बात नहीं कर सकता, लेकिन सी ++ "फेंक" में चुना गया था क्योंकि "raise" पहले ही मानक फ़ंक्शन नाम के रूप में लिया गया था।

1

मुझे लगता है कि फेंक बेहतर है, दोनों शब्द एक दूसरे के बदले हैं। बहुत उपयोगी यदि आपको इसे किसी पाठ में दो बार उपयोग करना है ताकि आप एक ही शब्द को दोहराने से बचें। लेकिन यह स्टाइलिस्टिक्स है जो तकनीकी लेखन के लिए जरूरी नहीं है (लेकिन अभी भी एक अच्छी बात है)।

+2

आप अंग्रेजी लेखन में सही हैं, लेकिन तकनीकी लेखन में लगातार एक ही शब्द का उपयोग करना बेहतर होता है, या पाठक सोच सकता है कि कुछ अंतर है। – stivlo

0

या तो फेंक या उठाओ ठीक लगता है, उनका मतलब मेरे लिए समान है। मैं इसे नहीं लिखूंगा, लेकिन जब मैं बात कर रहा हूं, तो मैं आमतौर पर 'अपवाद को अपनाना' कहता हूं।

घटनाओं के लिए मैं या तो 'आग एक घटना' या 'एक घटना उठाओ' का उपयोग करता हूं।

+0

घटनाओं के लिए सामान्य उपयोग में "आग" निश्चित रूप से है। शब्दावली दिशानिर्देशों के साथ आने पर, टीम ने ऐसा सोचा कि "आग" अनावश्यक रूप से बेलीकोज लगती है, इसलिए उन्होंने "raise" के पक्ष में "आग" को छोड़ने का सुझाव दिया।मेरी व्यक्तिगत राय यह है कि यह थोड़ा मूर्ख है, लेकिन "raise" ठीक है और हम एक या दूसरे पर मानकीकृत भी हो सकते हैं। –

1

विभिन्न भाषाओं की शब्दावली 'फेंक' के पक्ष में है। और मैं मानता हूं कि 'फेंक' बहुत अधिक समझ में आता है क्योंकि यह कीवर्ड इस्तेमाल होता है और संकलक/भाषा प्रलेखन हमेशा 'फेंक दिया' अपवाद को संदर्भित करता है।

हालांकि, बेहेमोथ अपवादों के पेट में वास्तव में Raised नहीं फेंक दिया गया है। यदि आप EXCEPTION_RECORD पर देख रहे डीबगर में पर्याप्त गहरे पाते हैं तो आप SEH की शब्दावली में बात करते हैं, जिसमें कंपाइलर/भाषा अपवाद (eh, clr, vcpp) की विशिष्ट श्रेणी में से कई स्वाद अपवादों में से एक है। मुझे लगता है कि मूल स्थितियों के लिए, जहां पेज गलतियों और ढेर के प्रवाह के लिए उठाए गए अपवाद, कर्नेल द्वारा स्थितियों को 'ध्यान' दिया गया था, जो कि स्थिति के उपयोगकर्ता मोड को 'सूचित' कर रहे थे और अपवाद नहीं था कि उपयोगकर्ता कोड खुद को 'फेंकना' था , इसलिए शब्द उस संदर्भ में अधिक समझ में आता है।

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