अपवाद उठाना या तो शुद्ध या गैर शुद्ध हो सकता है, यह केवल उठाए गए अपवाद के प्रकार पर निर्भर करता है। एक अच्छा नियम-अंगूठा यह है कि अगर अपवाद कोड द्वारा उठाया जाता है, तो यह शुद्ध होता है, लेकिन यदि हार्डवेयर द्वारा उठाया जाता है तो इसे आमतौर पर गैर-शुद्ध के रूप में वर्गीकृत किया जाना चाहिए।
यह देखकर देखा जा सकता है कि हार्डवेयर द्वारा अपवाद उठाए जाने पर क्या होता है: पहला इंटरप्ट सिग्नल उठाया जाता है, तो इंटरप्ट हैंडलर निष्पादित करना शुरू कर देता है। यहां मुद्दा यह है कि इंटरप्ट हैंडलर आपके फ़ंक्शन के लिए तर्क नहीं था और न ही आपके फ़ंक्शन में निर्दिष्ट था, बल्कि वैश्विक चर। किसी भी समय एक वैश्विक चर (उर्फ राज्य) पढ़ा या लिखा है, अब आपके पास शुद्ध कार्य नहीं है।
तुलना करें कि आपके कोड में उठाए गए अपवाद के लिए: आप ज्ञात, स्थानीय रूप से स्कॉम्ड तर्क या स्थिरांक के सेट से अपवाद मान बनाते हैं, और आप परिणाम को "फेंक देते हैं"। कोई वैश्विक चर इस्तेमाल नहीं किया जाता है। अपवाद फेंकने की प्रक्रिया अनिवार्य रूप से आपकी भाषा द्वारा प्रदान की जाने वाली वाक्य रचनात्मक चीनी है, यह किसी भी गैर-निर्धारिती या गैर-शुद्ध व्यवहार को पेश नहीं करती है। जैसा कि डॉन ने कहा था "यह संभवत: एक हो सकता है या विकल्प प्रकार का उपयोग करने के बराबर होना चाहिए", जिसका अर्थ है कि इसमें शुद्धता समेत सभी समान गुण भी हो सकते हैं।
जब मैंने कहा कि हार्डवेयर अपवाद को उठाना "आमतौर पर" साइड इफेक्ट के रूप में वर्गीकृत होता है, तो यह हमेशा ऐसा नहीं होता है। उदाहरण के लिए, यदि आपका कोड चालू हो रहा है, तो कंप्यूटर अपवाद को उठाता है जब यह अपवाद उठाता है, लेकिन इसके बजाय स्टैक पर एक विशेष मान डालता है, तो यह गैर-शुद्ध के रूप में वर्गीकृत नहीं है। मेरा मानना है कि आईईईई फ्लोटिंग पॉइंट एनएएन त्रुटि को एक विशेष मूल्य का उपयोग करके फेंक दिया गया है और एक बाधा नहीं है, इसलिए फ़्लोटिंग पॉइंट गणित करने के दौरान उठाए गए अपवादों को साइड-इफेक्ट फ्री के रूप में वर्गीकृत किया जा सकता है क्योंकि मूल्य किसी भी वैश्विक राज्य से नहीं पढ़ा जाता है, लेकिन यह है एक स्थिर एफपीयू में एन्कोडेड।
एक टुकड़े कोड के लिए सभी आवश्यकताओं को शुद्ध, कोड आधारित अपवाद और फेंक स्टेटमेंट सिंटैक्टिक चीनी सभी बक्से पर टिकटें, वे किसी भी राज्य को संशोधित नहीं करते हैं, उनके पास उनके कॉलिंग फ़ंक्शंस या बाहर कुछ भी नहीं है उनके आविष्कार, और वे अलग-अलग पारदर्शी हैं, लेकिन केवल एक बार जब संकलक आपके कोड के साथ अपना रास्ता बना लेता है।
सभी शुद्ध बनाम गैर-शुद्ध चर्चाओं की तरह, मैंने निष्पादन के समय या मेमोरी संचालन की किसी भी धारणा को छोड़ दिया है और इस धारणा के तहत संचालित किया है कि किसी भी कार्य को पूरी तरह कार्यान्वित किया जा सकता है, इसके वास्तविक कार्यान्वयन के बावजूद पूरी तरह लागू किया गया है। मेरे पास आईईईई फ्लोटिंग पॉइंट एनएएन अपवाद दावे का कोई सबूत नहीं है।
अपवाद केवल वापसी मूल्य के रूप में वापस नहीं किया जाता है। – Sjoerd
इसे फिर से खोलने के लिए आगे बढ़ना एक प्रश्न है, जबकि प्रकृति में अधिक सैद्धांतिक अभी भी इस वेबसाइट के लिए मान्य है। – Woot4Moo
इसे [programmers.se] – Daenyth