सिंक्रोनस सी # कोड में, अपवादों को कॉल स्टैक तक प्रचारित किया जाता है जब तक कि वे एक उपयुक्त कैच ब्लॉक तक नहीं पहुंच जाते जो अपवाद को संभाल सकता है। हालांकि, एसिंक्रोनस विधियों में अपवाद प्रबंधन उतना सीधा नहीं है।
सी # में एक एसिंक्रोनस विधि में तीन प्रकार के रिटर्न वैल्यू हो सकते हैं:शून्य, कार्य और कार्य। जब एक एसिंक विधि में कोई अपवाद होता है जिसमें रिटर्न प्रकार का कार्य या कार्य होता है, तो अपवाद ऑब्जेक्ट को एग्रीगेट अपवाद के उदाहरण में लपेटा जाता है और कार्य ऑब्जेक्ट से जोड़ा जाता है।
यदि कई अपवाद फेंके जाते हैं, तो वे सभी कार्य ऑब्जेक्ट में संग्रहीत होते हैं।
उदाहरण 1
static async Task Main(string[] args) { await DoSomething(); Console.ReadLine(); } public static async Task Foo() { throw new ArgumentNullException(); } public static async Task DoSomething(){ try{ await Foo(); } catch (ArgumentNullException ex){ Console.WriteLine(ex); } }
आउटपुट
System.ArgumentNullException: Value cannot be null. at DemoApplication.Program.Foo() in C:\Users\Koushik\Desktop\Questions\ConsoleApp\Program.cs:line 37 at DemoApplication.Program.DoSomething() in C:\Users\Koushik\Desktop\Questions\ConsoleApp\Program.cs:line 44