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 (déclenche) un objet descendant de TObject appelé 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:
essayer. {bloc de code protégé} sauf. ne commence. {exception block-handles SomeException} end; fin;
UNE essayer / sauf L'instruction exécute les instructions dans le bloc de code gardé. 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; essayer. mannequin: = 10 / zéro; 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 un 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} essayer. {bloc de code protégé} enfin. {terminaison blok - code pour libérer des ressources} fin;
Exemple:
... AboutBox: = TAboutBox. Créer (néant); essayer. AboutBox. ShowModal; enfin. AboutBox. Libération; 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 de détecter 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 Sur la gestion des exceptions dans Delphi Gestion des exceptions, en utilisant un outil comme Delphi Crash / Exception Handling with Bug Reporting et certains des articles connexes suivants: