Maison > Article > développement back-end > Comment intercepter les exceptions levées par les méthodes async void en C# ?
Dans le code C# synchrone, une exception se propage dans la pile d'appels jusqu'à ce qu'elle atteigne un bloc catch approprié qui peut gérer l'exception. Cependant, la gestion des exceptions dans les méthodes asynchrones n’est pas si simple.
Les méthodes asynchrones en C# peuvent avoir trois types de valeurs de retour : void, Task et Task. Lorsqu'une exception se produit dans une méthode asynchrone avec un type de retour Task ou Task , l'objet exception est encapsulé dans une instance AggregateException et attaché à l'objet Task.
Si plusieurs exceptions sont levées, toutes les exceptions seront levées. Ils sont stockés dans des objets Task.
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
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!