Gestion des erreurs et des exceptions dans les applications Delphi

Malheureusement, la création d'applications comprend le codage. Quelle que soit la précision avec laquelle vous écrivez / déboguez votre programme, il sera impossible d'imaginer toutes les situations qui peuvent mal tourner. L'utilisateur inexpérimenté peut, par exemple, essayer d'ouvrir un fichier inexistant ou entrer une mauvaise valeur dans un champ de données.
Les utilisateurs font des erreurs et nous devons être prêts à gérer / prévenir ces erreurs partout et chaque fois que cela est possible.

Erreurs, exceptions?

Une exception est généralement une condition d'erreur ou un autre événement qui interrompt le flux normal d'exécution dans une application. Chaque fois qu'une erreur résulte du traitement d'une ligne de code, Delphi crée (soulève) un objet descendant de TObject appelé l'objet d'exception.

Blocs gardés

Une application répond à une exception en exécutant un code de terminaison, en gérant l'exception ou les deux. La façon d'activer le recouvrement d'erreur / exception dans un code donné, l'exception doit se produire dans un bloc d'instructions gardé. Le code général ressemble à ceci:

 essayez bloc de code gardé sauf sur ne commencer exception bloc-gère SomeException end; fin; 

UNE essayer / sauf L'instruction exécute les instructions dans le bloc de code protégé. Si les instructions s'exécutent sans qu'aucune exception ne soit déclenchée, le bloc d'exception est ignoré et le contrôle est passé à l'instruction après le mot clé end.

Exemple:

… Zéro: = 0; essayez le mannequin: = 10 / Zero; sauf sur EZeroDivide do MessageDlg ('Impossible de diviser par zéro!', mtError, [mbOK], 0); fin;… 

Protéger les ressources

Lorsqu'une section de code acquiert une ressource, il est souvent nécessaire de s'assurer que la ressource est à nouveau libérée (ou vous pourriez obtenir une fuite de mémoire), que le code se termine normalement ou soit interrompu par une exception. Dans ce cas, la syntaxe utilise enfin mot-clé et ressemble à:

 du code pour allouer des ressources essayez un bloc de code protégé enfin terminaison blok - code pour libérer des ressources end; 

Exemple:

… AboutBox: = TAboutBox.Create (nil); essayez AboutBox.ShowModal; enfin AboutBox.Release; fin;… 

Application.OnException

Si votre application ne gère pas l'erreur qui a provoqué l'exception, alors Delphi utilisera son gestionnaire d'exceptions par défaut - il affichera simplement une boîte de message. Vous pouvez envisager d'écrire du code dans l'événement OnException pour l'objet TApplication, afin d'intercepter les erreurs au niveau de l'application.

Rompre les exceptions

Lorsque vous créez un programme avec la gestion des exceptions, vous ne souhaiterez peut-être pas que Delphi se casse sur les exceptions. C'est une excellente fonctionnalité si vous voulez que Delphi montre où une exception s'est produite; cependant, cela peut être ennuyeux lorsque vous testez votre propre gestion des exceptions.

Quelques derniers mots

L'idée de cet article est de vous donner un aperçu rapide des exceptions. Pour plus de détails sur la gestion des exceptions, envisagez la gestion des exceptions dans la gestion des exceptions Delphi, en utilisant un outil tel que Delphi Crash / Exception Handling with Bug Reporting et certains des articles connexes suivants: