Rendre un programme robuste

Rendre un programme robuste

La prévention maximale

Le mot d’ordre du programmeur pourrait être « toujours prévoir au maximum ». Beaucoup d’erreurs de programmation et de comportements non voulus sont dus au fait que la personne qui a programmé n’a pas prévu tel ou tel cas de figure. Prenons un exemple : Dim age As Integer age = -1 If (age < 18) Then MessageBox.Show(« Vous êtes mineur ») Else MessageBox.Show(« Vous êtes majeur ») EndIf Le programme va dire que l’on est majeur, alors qu’en fait, l’âge donné n’est pas valable. En effet, il n’existe pas d’âge négatif. Une solution est de prévoir ce cas. On peut par exemple considérer qu’un âge est valide s’il est compris entre 0 et 130 (pour ceux et celles qui ont une grande espérance de vie !). Voici le bout de programme corrigé : Dim age As Integer age = -1 If (age < 0 || age > 130) Then MessageBox.Show(« L’âge donné n’est pas valide ») ElseIf (age < 18) Then MessageBox.Show(« Vous êtes mineur ») Else 146 LE GUIDE COMPLET Chapitre 8 Rendre un programme robuste MessageBox.Show(« Vous êtes majeur ») EndIf EndIf Maintenant le programme vérifie si l’âge donné est valide et donne une réponse juste, alors que dans le cas précédent, il a donné une réponse fausse. Il s’agit là d’une manière de minimiser les erreurs, simple et relativement efficace. Cependant, Visual Basic .NET intègre des mécanismes plus puissants pour cette tâche : les exceptions.

Gestion des exceptions

Un bon recensement des cas de figure possibles permet de limiter les comportements non voulus du programme. Cependant, lors de l’exécution, il s’avère parfois que des cas problématiques n’ont pas été détectés, même si le programmeur a fait preuve d’une grand vigilance. Visual Basic .NET intègre un système de gestion d’exceptions qui permet de gérer de manière propre ces erreurs d’exécution. Les exceptions sont des instances de classe, dérivées de la classe System.Exception. Pour comprendre leur fonctionnement, vous n’avez pas besoin de connaître les notions sous-jacentes de programmation. Ces notions sont décrites au chapitre Passer au niveau supérieur. Disons pour le moment que ce sont simplement des enregistrements, avec des attributs dont les plus importants sont : j Message : c’est une chaîne de caractères qui donne une description de l’exception qui a été levée. j StackTrace : donne des informations concernant la fonction qui a provoqué l’exception, le dossier, le fichier, et même la ligne correspondante. Voici le fonctionnement de base d’une exception : Lorsqu’il y a une erreur d’exécution, c’est-à-dire une erreur qui n’a pas été détectée à la programmation, une exception correspondant à l’erreur La prévention maximale  est levée. Le programme s’arrête. En réalité, il ne s’arrête pas vraiment, mais disons que les instructions normales ne sont plus exécutées. Il va se dérouler jusqu’à trouver une structure capable de gérer l’exception, à savoir un bloc catch (nous y reviendrons). S’il n’est pas dans la fonction en cours, le programme va continuer dans les fonctions suivantes pour voir si un tel bloc existe. S’il n’existe pas, il y a un gestionnaire par défaut, qui affiche le type de l’exception, d’éventuelles informations supplémentaires, et l’application se termine. Il se présente comme ceci : Généralement, il ne faut pas utiliser le gestionnaire par défaut. C’est pourquoi vous allez apprendre à créer et à utiliser des structures de gestion d’exceptions.

Structure de gestion d’exceptions : le bloc Try… Catch… Finally

Les exceptions sont des éléments importants pour une bonne programmation. En les utilisant à bon escient, et de manière efficace, vous pourrez créer des programmes robustes, prêts à réagir au moindre souci. Il est important de faire des structures de gestion d’exceptions dans des portions de programme délicates, comme des divisions par un nombre variable (pour éviter la division par zéro), des accès à des fichiers ou dossiers (pour vérifier leur existence), etc. Voici la syntaxe d’un bloc Try… Catch… Finally : Figure 8.1 : Une exception non gérée 148 LE GUIDE COMPLET Chapitre 8 Rendre un programme robuste Try Instructions_a_evaluer Catch exception As type_de_lexception Instructions_de_gestion_des_exceptions Finally Instructions_toujours_executees End Try Dans le bloc Try, il faut mettre les instructions à évaluer pour vérifier le déroulement du programme. Le bloc sera exécuté et, si aucune exception n’a été levée, le programme continuera normalement. C’est dans le bloc Catch que les exceptions sont traitées. Ici vous pouvez afficher les messages, éventuellement les écrire dans des fichiers texte (vous verrez plus loin les journaux d’événements), modifier les données en conséquence, etc. Dans cette partie, il est intéressant d’utiliser les propriétés Message et StackTrace décrites précédemment. Il peut y avoir plusieurs blocs Catch. Dans ce cas, on parle de traitement sur plusieurs niveaux. On va du plus spécialisé au plus général : Try Instructions_a_evaluer Catch exception1 As type_de_lexception1 Instructions_de_gestion_des_exceptions1 Catch exception2 As type_de_lexception2 Instructions_de_gestion_des_exceptions2 Catch exception3 As type_de_lexception3 Instructions_de_gestion_des_exceptions3 Finally Instructions_toujours_executees End Try Dans le bloc Finally, insérez des instructions à exécuter dans tous les cas, qu’une exception ait été levée ou non. Ce bloc est facultatif. 

Formation et coursTélécharger le document complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *