Comment intercepter les exceptions levées par les méthodes async void en C# ?

WBOY
Libérer: 2023-08-31 12:53:02
avant
1509 Les gens l'ont consulté

如何捕获 C# 中 async void 方法抛出的异常?

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.

Exemple 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);
   }
}
Copier après la connexion

Sortie

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
Copier après la connexion

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!

source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!