हालांकि आप मानक में इसका आश्वासन पाने के लिए शायद कड़ी मेहनत कर सकते हैं, अंगूठे का एक साधारण नियम यह है कि सी में वैध कुछ भी संभवतः फेंक नहीं सकता है। [संपादित करें: सबसे करीब मैं इस आशय का एक सीधा बयान के बारे में पता कर रहा हूँ §15 की/2 पर है, जो कहता है कि:
कोड निष्पादित करता है कि एक फेंक अभिव्यक्ति "एक अपवाद फेंकने के लिए कहा जाता है , "[...]
कि रिवर्स में को देखते हुए, कोड है कि एक थ्रो-अभिव्यक्ति निष्पादित नहीं करता है एक अपवाद फेंक नहीं है]
फेंक मूल रूप से दो संभावनाओं के लिए प्रतिबंधित है। पहला है यूबी का आह्वान दूसरा सी ++ के लिए अद्वितीय कुछ कर रहा है, जैसे कि उपयोगकर्ता द्वारा परिभाषित प्रकार को असाइन करना जो operator =
ओवरलोड करता है, या new
अभिव्यक्ति का उपयोग करता है।
संपादित करें: जहां तक एक असाइनमेंट जाता है, वहां फेंकने के कुछ तरीके हैं। जाहिर है, असाइनमेंट ऑपरेटर में फेंकना ही ऐसा करेगा, लेकिन दूसरों की एक उचित संख्या है। उदाहरण के लिए, यदि स्रोत प्रकार लक्ष्य प्रकार से मेल नहीं खाता है, तो आप स्रोत में एक कास्ट ऑपरेटर या लक्ष्य में एक कन्स्ट्रक्टर के माध्यम से रूपांतरण प्राप्त कर सकते हैं - जिनमें से कोई भी फेंक सकता है।
स्रोत
2012-05-16 16:08:35
हमेशा प्रकार 'int' और आरएचएस हमेशा एक शाब्दिक प्रकार है? या आप सामान्य मामले के बारे में पूछ रहे हैं? (जो भी आपने दिखाया वह असाइनमेंट नहीं था) – Flexo
उस बिंदु को पकड़ने के लिए धन्यवाद। मैंने उदाहरण संपादित किया। वास्तव में, दोनों के लिए, आपके पहले प्रश्न के लिए। –