जैसा कि हम जानते हैं कि एक्सेप्शन कुछ ऐसा है जो प्रोग्राम या एप्लिकेशन के प्रवाह में रुकावट को संदर्भित करता है। यह अवांछित घटना एक्सेप्शन के रूप में जानी जाती है और आमतौर पर कोड के भीतर कुछ गलत होने का संकेत देती है। विशेष रूप से C# भाषा में एक एक्सेप्शन सिस्टम लेवल या एप्लिकेशन लेवल एक्सेप्शन हो सकता है। तो इस आधार पर
| क्र.सं. | मुख्य बिंदु | सिस्टम लेवल एक्सेप्शन | एप्लिकेशन लेवल एक्सेप्शन |
|---|---|---|---|
| 1 | व्युत्पत्ति | सिस्टम एक्सेप्शन बेस क्लास System.SystemException से व्युत्पन्न होते हैं जो स्वयं SystemException की व्युत्पन्न क्लास है। | दूसरी ओर एप्लिकेशन-लेवल एक्सेप्शन बेस क्लास System.ApplicationException से व्युत्पन्न होते हैं जो फिर से SystemException की व्युत्पन्न क्लास है। |
| 2 | घटना | सामान्यतः सिस्टम एक्सेप्शन तब होते हैं जब कोई नॉन-रिकवरेबल या घातक त्रुटि आती है, जैसे डेटाबेस क्रैश, बाउंड एरर आदि। | जबकि एप्लिकेशन लेवल एक्सेप्शन के मामले में कुछ रिकवरेबल त्रुटि आती है, उदाहरण के लिए, गलत प्रकार का इनपुट डेटा, अंकगणितीय एक्सेप्शन आदि। |
| 3 | हैंडलिंग | चूंकि सिस्टम लेवल एक्सेप्शन में त्रुटि घातक होती है इसलिए इस प्रकार के एक्सेप्शन के लिए ऐसा कोई हैंडलिंग या रोकथाम के तरीके नहीं हैं। | दूसरी ओर चूंकि एप्लिकेशन लेवल एक्सेप्शन आमतौर पर कोड लेवल पर try-catch ब्लॉक्स का उपयोग करके हैंडल किए जाते हैं। यदि कोड में घटित एक्सेप्शन के लिए try और catch ब्लॉक नहीं है तो यह पेज लेवल पर प्रोपेगेट होता है जहां Page_Error रूटीन का उपयोग एक्सेप्शन को हैंडल करने के लिए किया जा सकता है। |
| 4 | अनुकूलन | सिस्टम लेवल एक्सेप्शन के मामले में एक्सेप्शन अनुकूलन समर्थित नहीं है। | दूसरी ओर हम कस्टम एप्लिकेशन लेवल एक्सेप्शन परिभाषित और घोषित कर सकते हैं। |
| 5 | उत्पत्ति | ऊपर बताए गए बिंदुओं के अनुसार सिस्टम लेवल एक्सेप्शन .NET कॉमन लैंग्वेज रनटाइम द्वारा फेंके जाते हैं और लगभग सभी .Net एप्लिकेशन में उपयोग किए जाते हैं। | दूसरी ओर एप्लिकेशन लेवल एक्सेप्शन तब फेंके जाते हैं जब एक रिकवरेबल त्रुटि हुई हो, जैसे बिजनेस मेथड को अमान्य इनपुट आर्गुमेंट वैल्यू। यह क्लाइंट को एप्लिकेशन-विशिष्ट या बिजनेस लॉजिक मुद्दों के प्रति सचेत करेगा। |