मैं किसी भी फेंकने वाले अपवादों के बारे में विवरण लॉग इन करने के लिए FirstChanceException ईवेंट का उपयोग कर रहा हूं।AppDomain.FirstChanceException और स्टैक ओवरफ़्लो अपवाद
static void Main(string[] args)
{
AppDomain.CurrentDomain.FirstChanceException += (sender, eventArgs) =>
{
Console.WriteLine("Inside first chance exception.");
};
throw new Exception("Exception thrown in main.");
}
यह अपेक्षा के अनुसार काम करता है। लेकिन अगर ईवेंट हैंडलर के अंदर एक अपवाद फेंक दिया जाता है, तो घटना को फिर से उठाए जाने के बाद से एक स्टैक ओवरफ़्लो होगा।
static void Main(string[] args)
{
AppDomain.CurrentDomain.FirstChanceException += (sender, eventArgs) =>
{
throw new Exception("Stackoverflow");
};
throw new Exception("Exception thrown in main.");
}
ईवेंट हैंडलर में होने वाले अपवादों को मैं कैसे संभाल सकता हूं?
संपादित करें:
वहाँ सुझाव है कि मैं एक आज़माएं/कैच ब्लॉक में ईवेंट हैंडलर के अंदर कोड लपेट में कुछ जवाब है, लेकिन यह काम नहीं करता क्योंकि घटना अपवाद संभाला जा सकता है पहले उठाया है।
static void Main(string[] args)
{
AppDomain.CurrentDomain.FirstChanceException += (sender, eventArgs) =>
{
try
{
throw new Exception("Stackoverflow");
}
catch
{
}
};
throw new Exception("Exception thrown in main.");
}
बस प्रत्यावर्तन को रोकने के लिए एक bool क्षेत्र का उपयोग करें। –
मुझे नहीं पता कि आप यह क्यों चाहते हैं। पहला मौका अपवाद संभाला जाता है। पृथ्वी पर क्यों आप एक और फेंक देंगे? – leppie
मैं जानबूझकर किसी और को फेंक नहीं रहा हूं। क्या होता है यदि मैं उस त्रुटि को लॉग करने का प्रयास कर रहा हूं और जब मैं उस जानकारी को लॉग करने का प्रयास कर रहा हूं तो अपवाद फेंक दिया जाता है? – nivlam