GESTION ET TRAITEMENT DES ERREURS

Slides:



Advertisements
Présentations similaires
La programmation orientée objet avec Java L3-MIAGE Plan
Advertisements

Premier programme en C :
Formation universitaire à .NET: Introduction à C#
Le mécanisme des exceptions
La classe String Attention ce n’est pas un type de base. Il s'agit d'une classe défini dans l’API Java (Dans le package java.lang) String s="aaa"; // s.
gestion des exceptions
Algorithmique Résume.
Cours n° 8 Conception et Programmation à Objets
C.
Les pointeurs Manipulation d'adresses et de ce qui est contenu dans ces adresses Très important, fondamental même en C mauvaise réputation : 'dur à comprendre',
Introduction : Compilation et Traduction
FLSI602 Génie Informatique et Réseaux
1 Le mécanisme des exceptions Qu'est-ce qu'une exception? Comment définir et signaler des exceptions? Comment récupérer des exceptions?
MasterMind en spécialité i.s.n.
Traitement des erreurs en Java
Javascript les spécificités du langage - Partie 7 -
Principes de programmation (suite)
Récursivité.
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
Démarche de résolution de problèmes
Bibliothèque standard du C++
Les exceptions. Quest ce quune exception ? Une erreur dans le programme Due à un bug ou un cas « anormal » Gestion complète en java : JVM Dans dautre.
Les Classes les structures en C (struct) regroupent des variables : structuration de l'analyse mais problèmes de cohérence problèmes de sécurité d'accès.
Quest-ce quune classe dallocation? Une classe dallocation détermine la portée et la durée de vie dun objet ou dune fonction.
Algorithmique et Programmation
IFT-2000: Structures de données Plan de cours Théorie du contrat Types abstraits Dominic Genest, 2009.
Page de garde C++ Les exceptions Maîtrise dinformatique Février 2002.
Test et débogage Tests unitaires. Gestion d’erreurs. Notion d’état, de pré-condition et de post-condition. Assertion. Traces de programme. Débogueur et.
Structures de données IFT-2000
Structures de données IFT Abder Alikacem La classe string Département dinformatique et de génie logiciel Édition Septembre 2009 Département dinformatique.
Structures de données IFT Abder Alikacem Gestion des exceptions Département dinformatique et de génie logiciel Édition Septembre 2009.
Gestion et levée dexception. Une exception est un message envoyé par une méthode à une autre méthode. La méthode qui la reçoit a le choix de soccuper.
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
Standard Template Library
C++ : fonctions et opérateurs
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Programme de baccalauréat en informatique Programmation Orientée Objets IFT Thierry EUDE Module 6. Gestion des erreurs et des exceptions : Fonctionnement.
Structures de données IFT-2000
Structures de données IFT Abder Alikacem Gestion des exceptions Module 2 Département dinformatique et de génie logiciel Édition Septembre 2009.
Structures alternative et répétitive
Introduction Un test sur les tests Ce que n’est pas le test
Structures de données IFT-2000
Structures de données IFT-2000 Abder Alikacem Introduction Semaine 1 Département d’informatique et de génie logiciel Édition Septembre 2009.
La librairie assert.h.
Les assertions en Java.
LA LOGIQUE ALGORITHMIQUE
Paradigmes des Langages de Programmation
Paradigmes des Langages de Programmation
O-notation 1. Introduction 2. O-notation 3. Opérations 3.1 Somme 3.2 Produit 4. Règles générales 5. Exemple 6.Analyse des algorithmes récursifs 6.1 Dilatation.
La notion de type revisitée en POO
JavaScript.
Héritage multiple En langage C++, il est possible d’utiliser l’héritage multiple. Il permet de créer des classes dérivées à partir de plusieurs classes.
Java : Exceptions H Batatia. 5/03/2004Java12: H.Batatia2 Exemple 1 public class Bonjour { public static void main(String[] args) { System.out.println("Bonjour.
Notions avancées du C++
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 6 – Exceptions.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java.
Tutorat en bio-informatique
12/04/ Les exceptions Cours 11 Cours 11.
AMÉLIORATIONS ET ANALYSES RAPPORT : OPTIMISATION DE L’EXPLOITATION COMMERCIALE Groupe Athena.
Les surcharges d'opérateurs
Conception de Programmes - IUT de Paris - 1ère année – Cours 8 – Les entrées/sorties Comment fonctionnent les opérateurs > pour les types élémentaires.
Tutorat en bio-informatique Le 12 octobre Exercices 3 et 4 (MAT1400) - solutions La série du binôme (chap. 8.8) –Trouver la série entière et le.
6ième Classe (Mercredi, 17 novembre) CSI2572
Langage de programmation
Structures de données IFT-2000 Abder Alikacem Laboratoire #1 Département d’informatique et de génie logiciel Édition Septembre 2009.
Philippe Gandy - 8 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Exception Handling "Unfortunately, it's almost accepted practice to ignore error conditions, as if we're in a state of denial about errors." Bruce Eckel.
Philippe Gandy – 10 novembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Les exceptions Le mécanisme des exceptions est destiné à permettre aux fonctions profondes d'une bibliothèque de notifier la survenue d'une erreur aux.
Transcription de la présentation:

GESTION ET TRAITEMENT DES ERREURS

GESTION ET TRAITEMENT DES ERREURS Non mais, il y a trois types d’erreurs

GESTION ET TRAITEMENT DES ERREURS Non mais, il y a trois types d’erreurs Des erreurs syntaxiques. apparaissent lors de la saisie du texte de programmation liées au non respect de la syntaxe d’un opérateur du langage de programmation le compilateur (interprétateur) existant détecte la syntaxe erronée du développeur et fait apparaître le message les erreurs de ce type sont facilement corrigibles ces erreurs feront rire

GESTION ET TRAITEMENT DES ERREURS Non mais, il y a trois types d’erreurs Des erreurs en mode d’exécution. ces erreurs apparaissant lors de l’exécution du programme les causes qui les provoquent peuvent être d’ordre différent. Ainsi, les erreurs peuvent être la conséquence de données mal saisies, de valeurs de résultats intermédiaires comme la division par zéro, de l’extraction d’un chiffre négatif, des erreurs dues à des manipulations incorrectes de l’utilisateur, des erreurs des appareils, des erreurs de la programmation. Les erreurs de ce type sont prévisibles à un certain degré. Un code de programmation détectant et traitant les erreurs doit être prévu dans le projet. D’habitude plus de 50% du projet est lié au traitement d’erreurs attendues.

GESTION ET TRAITEMENT DES ERREURS Non mais, il y a trois types d’erreurs Des erreurs d’algorithme. Ce sont des erreurs dues à un algorithme erroné de traitement des données ou de gestion du programme. Ces erreurs sont difficilement détectables. Les résultats erronés ou le manque de résultats indiquent une telle erreur. Souvent les erreurs d’algorithmes provoquent l’interruption de l’exécution du programme.

GESTION ET TRAITEMENT DES ERREURS Toutes les erreurs survenues lors de l’exécution du programme ne peuvent pas être dépistées mais . . . Le langage C++ contient des énoncés de gestion des erreurs Ce sont des interruptions de l'exécution du programme à la suite d'un événement particulier. Le but des exceptions est de réaliser des traitements spécifiques aux événements qui en sont la cause. Ces traitements peuvent rétablir le programme dans son mode de fonctionnement normal, auquel cas son exécution reprend. Il se peut aussi que le programme se termine, si aucun traitement n'est approprié.

GESTION ET TRAITEMENT DES ERREURS Généralement, vous devez d'abord d'effectuer le traitement prévu, et si cela entraîne une erreur, vous pourrez capturer l'exception lancée par la directive throw. Sa syntaxe est la suivante : throw objet; Par conséquent, vous proposez alors une alternative correspondant au type de l'exception. En fait, et plus précisément, chaque exception est caractérisée par un type, et le choix du bon gestionnaire se fait en fonction de la nature de l'expression mentionnée à throw. Cette phase est réalisée par les directives try – catch (essayer et capturer).

GESTION ET TRAITEMENT DES ERREURS En C++, lorsqu'il faut lancer une exception, on doit créer un objet dont la classe caractérise cette exception, et utiliser le mot clé throw. Sa syntaxe est la suivante : throw objet; où objet est l'objet correspondant à l'exception. Cet objet peut être de n'importe quel type, et pourra ainsi caractériser pleinement l'exception. L'exception doit alors être traitée par le gestionnaire d'exception correspondant. On ne peut attraper que les exceptions qui sont apparues dans une zone de code limitée (cette zone est dite protégée contre les erreurs d'exécution), pas sur tout un programme. On doit donc placer le code susceptible de lancer une exception d'un bloc d'instructions particulier. Ce bloc est introduit avec le mot clé try : try { // Code susceptible de générer des exceptions... }

GESTION ET TRAITEMENT DES ERREURS Runtime error - comment ça marche? Si vous n’utilisez pas le gestionnaire de traite- ment des erreurs, alors le programme appelle la fonction terminate() définie dans la bibliothèque du C++ standard. Cette fonction propose un comportement par défaut, qui appelle notamment la fonction abort(), qui elle-même indique par l’affichage d’une boîte de message que le programme se termine anormalement. Voir exemple à l’acétate suivante

GESTION ET TRAITEMENT DES ERREURS Par exemple: Deux anomalies possibles : D'une part, une mauvaise proposition d'indice qui nous envoie en dehors des limites du tableau. D'autre part, une taille de tableau négative.

GESTION ET TRAITEMENT DES ERREURS Détecter les anomalies La première démarche, et ce n'est pas toujours la plus facile, consiste à recenser toutes les anomalies possibles au sein d'un programme, dues généralement, à une mauvaise manipulation de la part du programmeur qui l'utilise.

GESTION ET TRAITEMENT DES ERREURS Éventuellement, le développeur qui construit le programme pourrait envisager de proposer une solution dans tous les cas exceptionnels possibles, mais alors du code inutilement développé entraîne une perte de productivité au niveau du temps de travail et des délais à respecter. Dont dans certains cas, il est préférable que le concepteur du programme laisse l'initiative à l'utilisateur et par conséquent juste prévenir l’utilisateur du système qu'il y a un problème, à l’aide d’un message clair et précis. L’ajout d’une trace (« bavard ») des touches et des entrées fait par l’usager d’un programme aidera aussi le suivi de la maintenance du système.

GESTION ET TRAITEMENT DES ERREURS Interception et gestion d'une exception // Exemple de programme contenant une gestion d'exception #include <iostream> #include <exception> using namespace std; class ErreurIndice { }; bool correcte; int indice; int valeur; const int dimension = 5; int tableau[dimension]; void main() { do { correcte = true; try { cout << "Dans quelle case voulez-vous entrer la valeur ? "; cin >> indice; if (indice >= dimension || indice < 0) throw ErreurIndice(); cout << "Valeur : "; cin >> valeur; tableau[indice] = valeur; } catch (ErreurIndice) cerr << endl << endl << "Attention, votre indice n'est pas correcte" << endl << endl << endl; correcte = false; } while (!correcte); cout << "Le tableau d\'indice " << indice << " a pour contenu " << tableau[indice] << endl << endl; system("pause"); Exécution:

GESTION ET TRAITEMENT DES ERREURS Les gestionnaires d'exceptions doivent suivre le bloc try. Ils sont introduits avec le mot clé catch : catch classe { // Traitement de l'exception associée à la classe }

GESTION ET TRAITEMENT DES ERREURS Propager une exception Il est possible qu'une clause unique ne puisse pas gérer une exception complètement. Après quelques actions correctives, une clause catch peut décider que l'exception sera gérée par un bloc try-catch de niveau supérieur. Il suffit pour cela de propager l'exception. Dans un gestionnaire, l'instruction throw (sans expression) retransmet (propage) l'exception au niveau englobant.

GESTION ET TRAITEMENT DES ERREURS Gestionnaire pour toute les exceptions catch(…): permet d'intercepter les exceptions de tous types, non traitées par les blocs catch déclarés dans le programme.

GESTION ET TRAITEMENT DES ERREURS Notez que les objets de classe de stockage automatique définis dans le bloc try sont automatiquement détruits lorsqu'une exception fait sortir le contrôle du programme de leur portée. C'est également le cas de l'objet construit pour lancer l'exception. les blocs catch peuvent recevoir leurs paramètres par valeur ou par référence,. Il peut y avoir plusieurs gestionnaires d'exceptions. Chacun traitera les exceptions qui ont été générées dans le bloc try et dont l'objet est de la classe indiquée par son paramètre.