Question

J'ai ouvert un projet (créé dans D2007/08) dans D2009 et il compilerait, mais jetterait des tonnes d'exceptions lors de l'exécution. Chose étrange, mais je sais que le projet est un gâchis, je veux donc aller de l'avant et le réparer. Eh bien, pas vraiment réparer tout cela, le faire fonctionner suffirait.

Quand je l'ai lancé, j'ai reçu une notification d'exception du débogueur (le petit dialogue avec les boutons Pause, Continuer, Aide) et je voulais continuer et voir si cela fonctionnerait peut-être si nous ignorions l'exception. J'ai coché la case "Ignorer ce type d'exception". case à cocher dans le coin inférieur gauche et cliqué sur Continuer. Maintenant, je ne reçois plus la notification d'exception, mais l'application ne s'exécute toujours pas. Je ne reçois que quelques vagues boîtes d’erreur et n’ai quasiment aucune idée de ce qui se passe.

Je voudrais réactiver le type d'exception que j'avais précédemment sélectionné pour être ignoré. Mais je ne peux pas trouver l'option n'importe où. Où devrais-je chercher cela? Quelqu'un peut-il aider?

Était-ce utile?

La solution

Ce qui suit est extrait de cette page du Delphi Q & A de Rob Kennedy : (sous licence CC) bien qu’il soit lié à Delphi 2005, il peut être utile.

Pourquoi continue-je à recevoir des messages d'erreur même après avoir écrit un gestionnaire d'exceptions?

Dans ses paramètres par défaut, l'EDI Delphi vous avertit chaque fois qu'une exception se produit dans votre programme, comme le montre la figure 1. Il est important de comprendre qu'à ce stade, aucun des codes de gestion des exceptions de votre programme n'a encore été exécuté. C’est tout Delphi lui-même; son statut spécial de débogueur lui permet d’obtenir la première notification de toute exception dans votre programme, avant même que votre programme n’en ait connaissance.

 entrer la description de l'image ici

Éviter les notifications

Si vous ne souhaitez pas être averti lorsqu'une exception se produit, vous avez quelques options.

  • Vous pouvez utiliser les «points d'arrêt avancés» de Delphi pour désactiver le traitement des exceptions autour d'une région de code. Pour commencer, définissez un point d'arrêt sur la ligne de code où vous souhaitez que l'EDI ignore les exceptions. Cliquez avec le bouton droit sur le point du point d'arrêt dans la gouttière et ouvrez la boîte de dialogue des propriétés du point d'arrêt. Dans la section avancée se trouvent quelques cases à cocher. (Voir Figure 2.) Désélectionnez la case «Break» pour empêcher le débogueur d'interrompre votre programme sur cette ligne et activez la case «Ignorer les exceptions ultérieures».

    Ensuite, définissez un autre point d'arrêt où vous souhaitez que le débogueur reprenne la gestion des exceptions. Modifiez ses propriétés pour gérer les exceptions suivantes.

 entrer la description de l'image ici

  • Vous pouvez indiquer au débogueur d’ignorer certains types d’exceptions. La figure 3 illustre les options d’exception de langage de Delphi. Ajoutez une classe d'exceptions à la liste. Toutes les exceptions de ce type et de tous les types descendants seront transmises à votre programme sans que Delphi n'interfère.

 entrer la description de l'image ici

  • Dans une option liée à la précédente, vous pouvez indiquer au débogueur de ne pas interrompre une exception. Pour ce faire, décochez la case "Notifier les exceptions de langue".

  • Enfin, vous pouvez désactiver complètement le débogage intégré. Delphi ne vous informera pas des exceptions et ne s'arrêtera pas aux points d'arrêt ni ne permettra d'utiliser le bouton "Pause". Désactivez le débogage intégré dans les options du débogueur, comme illustré à la figure 5 pour Delphi 2005.

 entrer la description de l'image ici

Autres conseils

J'ai trouvé les types d'exception ignorés dans

(menu principal) Outils > > Options > > Options du débogueur > > Débogueurs CodeGear > > Exceptions de langue > > et la liste des types d'exceptions est ignorée.

C’est un peu plus caché que dans D2005 mais très proche de ce qui a été dit dans l’article référencé par Stuart Dunkeld.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top