Maison >développement back-end >C++ >Comment puis-je implémenter la gestion globale des exceptions dans les applications console ?
Gestion globale des exceptions dans les applications console
Dans les applications console, les exceptions non gérées peuvent interrompre l'exécution de l'application et entraîner une perte de données. Pour éviter cela, vous pouvez définir un gestionnaire d'exceptions global pour intercepter et gérer ces exceptions avec élégance.
Gestion personnalisée des exceptions globales
La classe AppDomain fournit un événement UnhandledException auquel il est possible de souscrire pour définir un gestionnaire d'exceptions global. Dans .NET 2.0 et supérieur, vous pouvez utiliser le code suivant :
<code class="language-csharp">AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(MyExceptionHandler);</code>
Notes VB.NET
Lorsque vous travaillez dans VB.NET, veuillez noter que vous devez utiliser le mot-clé "AddHandler" avant l'objet AppDomain.CurrentDomain, comme indiqué ci-dessous :
<code class="language-vb.net">AddHandler AppDomain.CurrentDomain.UnhandledException, New UnhandledExceptionEventHandler(AddressOf MyExceptionHandler)</code>
Exemple de mise en œuvre
Le code C# suivant fournit un exemple de base de gestionnaire d'exceptions global d'application console :
<code class="language-csharp">using System; class Program { static void Main(string[] args) { // 注册全局异常处理程序 AppDomain.CurrentDomain.UnhandledException += UnhandledExceptionTrapper; // 抛出一个未处理的异常以进行演示 throw new Exception("程序异常!"); } static void UnhandledExceptionTrapper(object sender, UnhandledExceptionEventArgs e) { // 记录或处理未处理的异常 Console.WriteLine(e.ExceptionObject.ToString()); // 让用户有机会查看错误消息 Console.WriteLine("按 Enter 键继续"); Console.ReadLine(); // 终止应用程序 Environment.Exit(1); } }</code>
Remarque : Les exceptions de type et de chargement de fichier générées par le CLR lors de la compilation JIT ne peuvent pas être interceptées à l'aide des gestionnaires d'exceptions globaux. Pour gérer ces exceptions, envisagez une compilation paresseuse ou appliquez l'attribut [MethodImpl(MethodImplOptions.NoInlining)]
au code à risque.
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!