लोड हो रहा है...

सामान्य त्रुटियां

C# में सामान्य त्रुटियां उन समस्याओं को दर्शाती हैं जो कोडिंग के दौरान या प्रोग्राम के रनटाइम पर उत्पन्न होती हैं। इन त्रुटियों को समझना और उनका प्रभावी ढंग से प्रबंधन करना किसी भी अनुभवी C# डेवलपर के लिए अत्यंत महत्वपूर्ण है। सामान्य त्रुटियों में NullReferenceException, IndexOutOfRangeException, DivideByZeroException, InvalidCastException और FormatException प्रमुख हैं। ये त्रुटियां सीधे C# की बेसिक संकल्पना जैसे सिंटैक्स, डेटा स्ट्रक्चर, एल्गोरिदम और ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (OOP) सिद्धांतों से जुड़ी होती हैं।
सामान्य त्रुटियों को समझने से डेवलपर्स को इनपुट वेलिडेशन, उचित एरर हैंडलिंग और डेटा स्ट्रक्चर की सीमा जाँच जैसी डिफेंसिव प्रोग्रामिंग तकनीक अपनाने में मदद मिलती है। इस अध्याय के माध्यम से पाठक सीखेंगे कि कैसे इन त्रुटियों की पहचान की जाए, उनका विश्लेषण कैसे करें और उन्हें C# के बेस्ट प्रैक्टिसेस के अनुसार हल करें। यह ज्ञान बड़े सॉफ्टवेयर सिस्टम और एंटरप्राइज एप्लिकेशन की स्थिरता और सुरक्षा के लिए महत्वपूर्ण है।

मूल उदाहरण

text
TEXT Code
using System;
using System.Collections.Generic;

namespace SamanyaTrutiyanDemo
{
class Program
{
static void Main(string\[] args)
{
// NullReferenceException
List<string> items = null;
try
{
Console.WriteLine(items.Count); // रनटाइम त्रुटि
}
catch (NullReferenceException ex)
{
Console.WriteLine(\$"एरर पकड़ा गया: {ex.Message}");
}

// IndexOutOfRangeException
int[] numbers = {1, 2, 3};
try
{
Console.WriteLine(numbers[5]);
}
catch (IndexOutOfRangeException ex)
{
Console.WriteLine($"एरर पकड़ा गया: {ex.Message}");
}
}
}

}

उपरोक्त कोड में दो प्रमुख सामान्य त्रुटियों का प्रदर्शन किया गया है। NullReferenceException तब उत्पन्न होती है जब किसी नल ऑब्जेक्ट पर ऑपरेशन किया जाता है। इसे try-catch ब्लॉक के माध्यम से संभाला गया है ताकि प्रोग्राम क्रैश न हो। IndexOutOfRangeException तब होती है जब किसी एरे के मान्य इंडेक्स से बाहर पहुंचने का प्रयास किया जाता है। यह उदाहरण यह दर्शाता है कि एरे की सीमा की जाँच करना क्यों आवश्यक है। इन त्रुटियों का समझना C# में स्थिर और सुरक्षित कोड लिखने के लिए महत्वपूर्ण है।

व्यावहारिक उदाहरण

text
TEXT Code
using System;
using System.Collections.Generic;

namespace AdvancedErrorHandling
{
class Calculator
{
public int Divide(int numerator, int denominator)
{
if (denominator == 0)
throw new DivideByZeroException("हिस्सेदार 0 नहीं हो सकता।");
return numerator / denominator;
}
}

class Program
{
static void Main(string[] args)
{
Calculator calc = new Calculator();
int result = 0;
try
{
result = calc.Divide(10, 0);
}
catch (DivideByZeroException ex)
{
Console.WriteLine($"एरर: {ex.Message}");
}
finally
{
Console.WriteLine($"अंतिम परिणाम: {result}");
}
}
}

}

Advanced C# Implementation

text
TEXT Code
using System;
using System.Collections.Generic;

namespace EnterpriseErrorDemo
{
public interface IDataProcessor
{
void ProcessData(List<int> data);
}

public class DataProcessor : IDataProcessor
{
public void ProcessData(List<int> data)
{
if (data == null)
throw new ArgumentNullException(nameof(data), "सूची null नहीं हो सकती।");

for (int i = 0; i <= data.Count; i++)
{
try
{
Console.WriteLine(data[i]);
}
catch (ArgumentOutOfRangeException ex)
{
Console.WriteLine($"पकड़ी गई त्रुटि: {ex.Message}");
}
}
}
}

class Program
{
static void Main(string[] args)
{
IDataProcessor processor = new DataProcessor();
List<int> numbers = new List<int> {1, 2, 3};

try
{
processor.ProcessData(numbers);
}
catch (Exception ex)
{
Console.WriteLine($"अनपकड़ी त्रुटि: {ex.Message}");
}
}
}

}

C# में बेस्ट प्रैक्टिसेस में इनपुट और ऑब्जेक्ट वेलिडेशन, try-catch-finally का उपयोग, प्रभावी डेटा स्ट्रक्चर और एल्गोरिदम का चयन शामिल है। सामान्य गलतियाँ जैसे मेमोरी लीक, अपर्याप्त एरर हैंडलिंग और गैर-प्रभावी एल्गोरिदम से बचने के लिए Debugging टूल्स और StackTrace विश्लेषण का उपयोग किया जा सकता है। प्रदर्शन को ऑप्टिमाइज़ करने के लिए अनावश्यक एक्सेप्शन्स से बचें और कलेक्शन इनिशियलाइज़ेशन का सही उपयोग करें। सुरक्षा सुनिश्चित करने के लिए इनपुट वेलिडेशन और रिसोर्स मैनेजमेंट महत्वपूर्ण हैं।

📊 संपूर्ण संदर्भ

C# Element/Method Description Syntax Example Notes
NullReferenceException Null ऑब्जेक्ट पर पहुंचने पर throw new NullReferenceException(); string s = null; Console.WriteLine(s.Length); सामान्य रनटाइम त्रुटि
IndexOutOfRangeException एरे की सीमा से बाहर पहुंच throw new IndexOutOfRangeException(); int\[] arr = {1,2}; Console.WriteLine(arr\[3]); सदैव सीमा जाँचें
DivideByZeroException 0 से विभाजन throw new DivideByZeroException(); int result = 5/0; देनदार जाँच करें
ArgumentNullException Null आर्गुमेंट throw new ArgumentNullException("arg"); void Foo(string s){if(s==null)throw new ArgumentNullException("s");} इनपुट वेलिडेशन करें
InvalidCastException गलत टाइप कन्वर्शन (Type)newObject object obj = "text"; int x = (int)obj; कन्वर्शन पहले जाँचें
FormatException गलत फॉर्मेट int.Parse("abc"); int.Parse("abc"); TryParse उपयोग करें
OverflowException अंक ओवरफ्लो checked{int x=int.MaxValue+1;} checked{int x=int.MaxValue+1;} checked का उपयोग करें
FileNotFoundException फ़ाइल नहीं मिली throw new FileNotFoundException("file.txt"); File.ReadAllText("missing.txt"); फ़ाइल अस्तित्व जाँचें
StackOverflowException अनंत रिकर्शन void Foo(){Foo();} Foo(); रिकर्शन सीमित करें
OutOfMemoryException पर्याप्त मेमोरी नहीं throw new OutOfMemoryException(); var arr = new int\[int.MaxValue]; मेमोरी मॉनिटर करें
IOException इनपुट/आउटपुट त्रुटि throw new IOException("Error"); File.ReadAllText("path"); I/O हैंडल करें
KeyNotFoundException कुंजी नहीं मिली dict\["key"]; var dict = new Dictionary\<string,int>(); dict\["x"]; ContainsKey जाँचें

📊 Complete C# Properties Reference

Property Values Default Description C# Support
Message string "" एरर विवरण सभी संस्करण
StackTrace string null कॉल स्टैक विवरण सभी संस्करण
InnerException Exception null एरर का मूल कारण सभी संस्करण
Source string null एप्लिकेशन या ऑब्जेक्ट का नाम सभी संस्करण
HelpLink string null डॉक्यूमेंटेशन लिंक सभी संस्करण
TargetSite MethodBase null एरर उत्पन्न करने वाली विधि सभी संस्करण
HResult int 0 एरर कोड सभी संस्करण
Data IDictionary Empty कस्टम डेटा सभी संस्करण
ExceptionType string "" एरर का प्रकार सभी संस्करण
IsTransient bool false अस्थायी एरर है या नहीं C# 8.0+
StackFrame string null विशेष स्टैक फ्रेम सभी संस्करण

सामान्य त्रुटियों का ज्ञान डेवलपर्स को C# में स्थिर और सुरक्षित एप्लिकेशन बनाने में सक्षम बनाता है। इसके माध्यम से रनटाइम और कंपाइल टाइम समस्याओं की पहचान और समाधान में दक्षता आती है। अगला कदम असिंक्रोनस कोड में एरर हैंडलिंग, लॉगिंग सिस्टम्स का इंटिग्रेशन और प्रदर्शन ऑप्टिमाइज़ेशन तकनीक सीखना होना चाहिए। यह ज्ञान पेशेवर परियोजनाओं में रखरखाव, सुरक्षा और स्थिरता बढ़ाने में मदद करता है।

🧠 अपने ज्ञान की परीक्षा करें

शुरू करने के लिए तैयार

Test Your Knowledge

Test your understanding of this topic with practical questions.

3
प्रश्न
🎯
70%
पास करने के लिए
♾️
समय
🔄
प्रयास

📝 निर्देश

  • हर प्रश्न को ध्यान से पढ़ें
  • हर प्रश्न के लिए सबसे अच्छा उत्तर चुनें
  • आप जितनी बार चाहें क्विज़ दोबारा दे सकते हैं
  • आपकी प्रगति शीर्ष पर दिखाई जाएगी