यदि मैं यहां लाइनों के बीच सही ढंग से पढ़ रहा हूं, तो मुद्दा यह है कि आपका अपवाद प्रभावी रूप से 'गायब' हो रहा है, भले ही डिफ़ॉल्ट डिबगर व्यवहार अनचाहे अपवादों पर टूटना चाहिए।
यदि आपके पास एसिंक्रोनस विधियां हैं, तो आप इस मुद्दे पर चल सकते हैं क्योंकि थ्रेड पूल थ्रेड पर अपवादों को नहीं पकड़ा गया है क्योंकि टास्क निरंतरता के भाग को बिना अपवाद के अपवाद नहीं माना जाता है। बल्कि, उन्हें निगल लिया जाता है और टास्क के साथ संग्रहीत किया जाता है।
उदाहरण के लिए, इस कोड को देखें:
class Program
{
static void Main(string[] args)
{
Test();
Console.ReadLine();
}
private async static Task Test()
{
await Task.Delay(100);
throw new Exception("Exception!");
}
}
यदि आप इस प्रोग्राम को डिफॉल्ट डिबगर सेटिंग्स (केवल अपवादों पर रोक नहीं) के साथ चलाते हैं, तो डीबगर नहीं टूटेगा। ऐसा इसलिए है क्योंकि निरंतरता के लिए आवंटित थ्रेड पूल थ्रेड अपवाद को निगलता है (इसे टास्क उदाहरण में पास कर रहा है) और खुद को वापस पूल में जारी करता है।
ध्यान दें, इस मामले में, वास्तविक मुद्दा यह है कि इसके Task
द्वारा लौटाया गया Test()
चेक कभी नहीं किया जाता है। यदि आपके पास अपने कोड में समान प्रकार के 'फायर-एंड-भूल' तर्क है, तो आप उस समय के अपवादों को नहीं देखेंगे जो उन्हें फेंक दिए गए हैं (भले ही वे विधि के अंदर 'अखंडित' हों); अपवाद केवल तब दिखाई देता है जब आप कार्य का इंतजार करके उसका निरीक्षण करते हैं, उसके परिणाम की जांच करते हैं या स्पष्ट रूप से उसके अपवाद को देखते हैं।
यह सिर्फ एक अनुमान है, लेकिन मुझे लगता है कि यह संभावना है कि आप इस तरह से कुछ देख रहे हैं।
Tool
याWindow
टैब में सभी वांछित स्थान होंगे। आपके मामले में आपकी अपवाद सेटिंग्स की तलाश है ।