चेंड एक्सेप्शन्स (चेन किए गए अपवाद) एक्सेप्शन की श्रृंखला होती है जहां प्रत्येक एक्सेप्शन पिछले एक्सेप्शन को इनर एक्सेप्शन के रूप में लपेटता है। यह मूल कारण को संरक्षित करता है।
उदाहरण
using System;
class Demo {
static void Main(string[] args) {
try {
One();
} catch (Exception e) {
Console.WriteLine(e);
}
}
static void One() {
try {
Two();
} catch (Exception e) {
throw new Exception("पहला अपवाद!", e);
}
}
static void Two() {
try {
Three();
} catch (Exception e) {
throw new Exception("दूसरा अपवाद!", e);
}
}
static void Three() {
try {
Last();
} catch (Exception e) {
throw new Exception("तीसरा अपवाद!", e);
}
}
static void Last() {
throw new Exception("अंतिम अपवाद!");
}
}
आउटपुट
System.Exception: पहला अपवाद! ---> System.Exception: दूसरा अपवाद! ---> System.Exception: तीसरा अपवाद! ---> System.Exception: अंतिम अपवाद!
at Demo.Last()
at Demo.Three()
at Demo.Two()
at Demo.One()
at Demo.Main()
मुख्य बिंदु:
throw new Exception("संदेश", innerException)- चेनिंग के लिए कंस्ट्रक्टरException.InnerException- पिछला अपवाद एक्सेस करने के लिए प्रॉपर्टी- स्टैक ट्रेस पूरी चेन दिखाता है
- डीबगिंग के लिए मूल कारण पहचानने में सहायक
सर्वोत्तम अभ्यास:
- हमेशा मूल अपवाद को इनर एक्सेप्शन के रूप में पास करें
- सार्थक संदेश जोड़ें जो संदर्भ बताएं
throw;(बिना आर्गुमेंट) का उपयोग करके री-थ्रॉ करें ताकि स्टैक ट्रेस संरक्षित रहे