La soi-disant exception fait référence à une erreur temporaire causée par des problèmes dans le programme lui-même ou par une mauvaise opération de l'utilisateur lors de l'exécution du programme.
Arrêtez l'exécution du programme et produisez des résultats erronés. Quiconque a écrit des programmes en Delphi connaît certainement les exceptions. source d'exception
Il existe de nombreux aspects. La référence à un pointeur nul, l'affectation hors limites, la division par zéro, etc. peuvent toutes provoquer une exception. Si des mesures appropriées ne sont pas prises face à des événements anormaux,
Une mauvaise manipulation peut provoquer le crash de l'ensemble du programme. Heureusement, Delphi peut gérer automatiquement presque toutes les exceptions pouvant survenir.
traiter avec.
1. Un exemple simple de Delphi gérant automatiquement les exceptions
1. Dans l'environnement intégré Delphi (3.0), sélectionnez le menu Outils | Options d'environnement et dans l'environnement qui apparaît
Il existe une option Break on exception sur la page PRéférences dans la fenêtre Options (en bas à gauche). Cette option est par défaut
L'état est sélectionné, de sorte que si une exception se produit lors de l'exécution du programme dans l'environnement intégré Delphi, le programme sera automatiquement interrompu et reviendra
Dans l'état de débogage Delphi, le curseur reste sur le code où l'exception se produit afin que les programmeurs puissent le modifier. Cliquez maintenant sur cette option pour la rendre indisponible
Vérifiez-le et OK.
2. Créez un nouveau projet et enregistrez-le sous Excep.dpr (cela sera utile plus tard), et enregistrez l'unité correspondante sous Excpunit.pas dans Form1 ;
Mettez-y un composant TmaskEdit, définissez sa propriété EditMask sur Date, puis placez un composant Tbutton, double-cliquez dessus,
Écrivez son événement OnClick comme suit :
procédure TForm1.BitBtn1Click(Expéditeur : TObject);
var k:entier;
commencer
k:=0;
k:=9 div k;{Une exception de division par 0 sera générée ici}
fin;
3. Enregistrez et exécutez le programme. Écrivez simplement un ou deux nombres dans MaskEdit1 et appuyez sur Entrée. Cela générera (également appelé réveil).
Une exception fait apparaître la fenêtre suivante :
Il s'agit d'une exception due aux données incomplètes saisies dans la zone MaskEdit. Delphi les gère automatiquement.
Après "OK", le programme continue son exécution. Cliquez sur Button1, une autre fenêtre similaire apparaîtra, car il y a un
Division par zéro exception.
2. Les invites de Delphi en cas de situations anormales sont en anglais, ce qui n'est pas utilisé par les Chinois. Nous pouvons intercepter ces exceptions et les mettre en œuvre en utilisant.
Conseils chinois. Les étapes spécifiques sont les suivantes :
1. Modifiez l'événement OnClick de Button1 comme suit :
procédure TForm1.BitBtn1Click(Expéditeur : TObject);
var k:entier;
commencer
k:=0;
essayer
k:=9 divk;
sauf
showmessage('Le diviseur ne peut pas être nul');
fin;
fin;
2. Enregistrez et exécutez le programme. La boîte de dialogue qui apparaît après avoir cliqué sur Button1 sera remplacée par le message chinois "Le diviseur ne peut pas être nul". utiliser
L'instruction try...sauf...end est une méthode courante de gestion des exceptions. L'instruction située après le mot réservé try est exécutée si.
Si une exception se produit, l'instruction entre les mots réservés except et end sera exécutée. Sinon, l'instruction après end sera exécutée, remplaçant ainsi celle de Delphi.
Gestion par défaut des exceptions. Une autre instruction similaire est try...finally...end, qui est identique à try...sauf..
....La différence avec end est que, que l'instruction après try génère ou non une exception, l'instruction après enfin sera définitivement exécutée.
Cependant, pour les exceptions comme celles générées par la boîte TmaskEdit, l'utilisation de l'instruction try est impuissante car nous ne pouvons pas trouver
Un endroit pour écrire des instructions try. Nous ne pouvons le résoudre que d’une autre manière.
3. Chaque projet Delphi possède un objet Tapplication, qui est un objet invisible. nous pouvons
En modifiant son événement OnException, vous pouvez contrôler les exceptions spéciales. Les méthodes spécifiques sont les suivantes :
1. Déclarez un processus Myexception dans la classe de Form1. Ce processus est lié à l'événement OnException de Tapplication.
Mêmes paramètres :
publique
{Déclarations publiques}
procédure MyException (Expéditeur:TObject;E:Exception);
2. Écrivez le code du processus :
procédure TForm1.MyException(Sender:TObject;E:Exception);
commencer
si E est EDBEditError alors showmessage('L'entrée n'est pas conforme aux règles')
autre
Application.ShowException(E); {Appel de la gestion des exceptions par défaut}
fin;
3. Attribuez une valeur à l'événement OnException de Tapplication dans l'événement OnCreate de Form1 :
procédure TForm1.FormCreate(Expéditeur : TObject);
commencer
Application.OnException :=MonException;
fin;
4. Enregistrez et exécutez le programme, entrez un ou deux chiffres dans la zone MaskEdit, appuyez sur Entrée et une boîte de dialogue en chinois apparaîtra.
Remplacez la boîte de dialogue d'origine en anglais.
4. Ici, nous aimerions rappeler à chacun de prêter attention à trois points :
1.Delphi résume toutes les exceptions en une seule classe, c'est-à-dire la classe d'exception (Exception). Chaque exception spécifique est considérée comme.
Un cas particulier, dans sysutils.pas dans le répertoire c:program files orlandDelphi 3source tlsys
Il existe une définition de la classe Exception.
2. L'objet Tapplication fournit un processus HandleException pour gérer les erreurs non gérées évoquées dans le programme.
Événements d'exception, lorsque nous attribuons une valeur à l'événement OnException de Tapplication, HandleException appellera le nouveau
Procédure pour remplacer l'affichage du message d'erreur par défaut. Nous sommes libres d'organiser le contenu affiché selon notre propre processus pour atteindre Han
effet de transformation.
3. Nous utilisons l'instruction de jugement IF pour obtenir l'exception spécifiée. Nous pouvons utiliser une méthode simple pour obtenir le nom de l'exception spécifiée.
En revenant à l'exemple du début de l'article, nous sélectionnons ici l'option Break on exception, exécutons à nouveau le programme et entrons
Des nombres incorrects entraînent la génération d'une exception par MaskEdit1 et la fenêtre suivante apparaît :
L'EDBEditError dans la deuxième ligne de la fenêtre est le nom de l'exception. Le code du programme dans cet article :
si E est EDBEditError alors showmessage('L'entrée ne répond pas aux exigences')
Il a été écrit sur la base de ce nom. C'est ici que vous pouvez obtenir des informations lorsque vous ne connaissez pas le nom exact de l'exception. Utiliser ceci
Soyez prudent lors de la gestion des événements d'exception car vous avez remplacé la gestion des exceptions par défaut de Delphi.
Cela pourrait provoquer un crash du système.
Le programme ci-dessus s'exécute avec succès sous Windows 95 Delphi 3.0.