Bien que l'utilisation d'async void puisse sembler acceptable dans certains scénarios, comme l'exemple artificiel que vous avez fourni, il est généralement considéré comme une mauvaise pratique pour plusieurs raisons fondamentales.
L'un des principaux pièges des méthodes async void est leur différente sémantique de gestion des erreurs. Les exceptions qui s'échappent d'une méthode void asynchrone ne sont pas automatiquement propagées et peuvent être difficiles à détecter, entraînant un comportement inattendu.
Les méthodes void asynchrones n'ont pas la capacité d'être composées méthodes asynchrones de niveau. La logique encapsulée dans une méthode void asynchrone est isolée, ce qui rend difficile sa réutilisation et son intégration avec d'autres codes asynchrones.
Les méthodes void asynchrones présentent des défis importants pour les tests. Étant donné que les exceptions ne se propagent pas automatiquement, il est plus complexe d'écrire des tests unitaires qui couvrent efficacement les fonctionnalités de la méthode et ses chemins d'erreur potentiels.
Il convient également de noter que async void est une approche qui s'écarte des pratiques courantes adoptées par d'autres langages prenant en charge la programmation asynchrone. Des langages comme F#, Python, JavaScript et TypeScript n'incluent pas le vide asynchrone dans leur syntaxe.
Dans le scénario spécifique que vous avez présenté, où vous ne le faites pas Si vous avez l'intention d'attendre le résultat d'une opération asynchrone, une approche plus appropriée serait d'utiliser des gestionnaires d'événements asynchrones void. En modifiant le gestionnaire d'événements en async void, comme indiqué dans l'extrait de code fourni dans la réponse, vous pouvez atténuer les inconvénients associés à async void tout en obtenant la fonctionnalité souhaitée.
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!