Détection des erreurs.

Slides:



Advertisements
Présentations similaires
C++ Les fonctions. Présentation Utilité : Dès qu'un programme dépasse la centaine de lignes de code, il est pratique de pouvoir le décomposer en plusieurs.
Advertisements


Made with OpenOffice.org 1 Travailler en réseau intranet à l'école Un réseau : pourquoi ? Architecture du réseau Partager un dossier Enregistrer en réseau.
CINI – Li115 1 Semaine 11 Les pointeurs (suite) ● Tableaux et pointeurs ● Questions sur les pointeurs.
TP 1 BIS Programmation structurée à l’aide de fonctions (FC) et de bloc fonctionnels (FB)
1 Programmation en C++ Cycle de vie ● La vie d'un objet ● Destructeur ● Gestion de mémoire dynamique.
1 Programmation en C++ IO en C++/SL ● Standard Library ● Types, objets pour IO ● L'entrée de clavier ● Sortie à l'écran ● Fichiers.
DIAGRAMME DE DEPLOIEMENT Exposé de: MBALLA MEKONGO Michèle MBOUNA FEUZE William SIEYADJEU Alex Lionel CHOPGWE Leonard NDUMATE Landry TIDJON Lionel.
MINISTERE DE L’ENSEIGNEMENT SUPERIEUR ET DE LA RECHERCHE SCIENTIFIQUE Université d’Adrar Diagramme d’états-transitions Présenté par Sbai Omar Benothman.
8INF259 STRUCTURE DE DONNEES LISTE, PILES, FILES LANDRY D. CHAPWOUO T., UQAC/DIM mardi 4 octobre 2016LANDRY CHAPWOUO.
Les commandes externes
Cross-Plateform Cours JavaScript
MENUS PRINCIPAL RESEAU.
Cycle 3 Cycle 4 Pilotage du robot mBot Site scratch :
LES TABLEAUX EN JAVA.
Session 1 6 mars 2017 Plateforme ICONICS Justine Guégan
Ecriture collaborative d’une dissertation en classe
Algorithme et programmation
Séminaire Novembre 2006 Zephir : Déploiement et supervision des serveurs Eole.
Chapitre 6 La gestion des Exceptions et les assertions
PROJET JAVA Automatisation d’une rame de métro
7. Créez les questions pour les tests formatifs et sommatifs
Concurrence Opérations atomiques Rémi Forax
Ajouter le code dans une page html
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
11ième Classe (Mardi, 18 novembre) CSI2572
JAVA et POO : Notion d'héritage
Gestion dynamique de la mémoire : new / delete
Javadoc et débogueur Semaine 03 Version A16.
Principes de programmation (suite)
Polymorphisme : règles
Tableaux à plusieurs dimensions en langage C
Réalisation d'agents de surveillance Zephir
Algorithmique & Langage C
Python for beginners Qu'est ce que Python
4ième Classe (Mardi, 30 Septembre) CSI2572
Présentation Structure données abstraite (TDA) Rappel : File
Semaine #4 INF130 par Frédérick Henri.
Piloter un robot mbot à distance avec retour vidéo
Bonnes pratiques Orienté Objet et Java
Programmation en C++ Classes
Notion De Gestion De Bases De Données
3- Nouvelles pages d’accueil
Langage de modélisation graphique de système
Introduction à Internet
Développement d’applications interactives
Diagrammes UML 420-KE2-LG.
La Station de pompage.
Programmation Android Composantes d’une application
Module 13 : Implémentation de la protection contre les sinistres
Langages de programmation TP11
De Scratch à Python : une transition douce… COMMUNICATION
Dossier SARL Verdier Application No 8
Présentation 9 : Calcul de précision des estimateurs complexes
EPITECH 2009 UML EPITECH 2009
Championnat de France individuel
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.
1 Exception && Structure dynamique Exception && Structure dynamique Mohammed OUANAN.
Sommaire : Les capteurs de force. Les capteurs à jauges de contraintes
Démarrage du projet Préparer les fonds de plan
La gestion des pilotes de périphériques
Opérateurs et fonctions arithmétiques Opérateurs de relation Opérateurs logiques Cours 02.
INTERFACE ET POLYMORPHISME
Retour sur les interfaces
Jérôme CUTRONA PHP objet Jérôme CUTRONA 08:30:34 Programmation Web
Backup des Postes de Travail
STSWEB Structures : Divisions et groupes Spécificités des établissements privés Diffusion Nationale TOULOUSE -Mai 2006.
Python Nicolas THIBAULT
TP: RC Université de Jijel
TP RC.
Transcription de la présentation:

Détection des erreurs

Détection des erreurs Introduction Origine des erreurs Traitement des erreurs En C En C++/JAVA Les exceptions

Introduction Le développement et l’utilisation d’un programme implique la gestion de nombreuses erreurs. Du plus souhaitable au moins souhaitable, on peut citer le statut des différentes erreurs : 1. erreurs détectées à la compilation 2. erreurs détectées et traitées (corrigées) à l’exécution 3. erreurs détectées et non traitées à l’exécution 4. erreurs non détectées à l’exécution

Origine des erreurs Erreurs d’entrée/sortie faute de saisie de l’utilisateur fichier corrompu ou inaccessible Erreurs de matériel Imprimante déconnectée disque dur saturé connexion réseau défaillante Erreurs de programmation index de tableau invalide emploi d’une variable référence non initialisée

Traitement des erreurs En présence d’une erreur, un programme se comporte selon l'un des trois scenarii suivants : idéalement : il permet de revenir à un état défini et de poursuivre ainsi l’exécution. honnêtement : il avertit l’utilisateur, permet une sortie correcte après une sauvegarde de l’ensemble du travail en cours. lamentablement : il s’interrompt brusquement (avec éventuellement un message d’erreur peu clair)

Traitement des erreurs en C Conventions de programmation valeurs spéciales de retour positionnement de flags Mais aucune garantie que les conventions soient suivies par tout le monde.

Traitement des erreurs en C++/java Gestion d'exceptions Si un problème survient, une exception est levée. Toute exception peut/doit être attrapée. Le code de gestion des exceptions est placé à part. Faire la question 1 du support de cours

Lancement d'une exception : throw Dans le corps d’une méthode à tester, figure (éventuellement) une ou plusieurs instructions spéciales « throw » permettant de lever une exception.

Que réalise la classe Vect ? Exemple #include <cstdlib> using namespace std ; // déclaration et définition d'une classe vect_limite pour gérer une exeption de dépassement de limite class VectLimite { }; class Vect { private : int nelem ; int * adr ; public : Vect (int); ~Vect (); int & operator [] (int i); Vect::Vect (int n): nelem(n) { adr = new int [n] ; } Vect::~Vect () delete []adr ; int & Vect::operator [] (int i) if (i<0 || i>=nelem) VectLimite lim; throw (lim) ; return adr [i] ; Si le paramètre i n’est pas correct, déclenchement d’une exception Que réalise la classe Vect ?

Les exceptions Faire la question 2 du support de cours

Les exceptions Une exception est un objet transmis lors du défaut Avant de lever (lancer) une exception, celle-ci doit être créée. lever/lancer : throw créer : new Une exception peut être attrapée dans tout contexte plus général. attraper : catch

Attraper une exception Un bloc try { } délimite le code à surveiller Un ou plusieurs blocs catch(… ) { } suivent: chaque bloc catch(… ) permet de récupérer la main pour traiter un type d'erreurs. ils sont considérés dans l'ordre jusqu'à ce que l'exception levée corresponde au type ou à un sous-type de celui indiqué en argument.

Gérer une exception Certaines méthodes peuvent lancer des Exceptions. Il est nécessaire lorsqu'on utilise une telle méthode : Soit d’attraper les exceptions levées soit de laisser passer les exceptions

Exemple exception cas limite // traitement de l’exception vect_limite int main () { try // Zone de surveillance Vect v(10) ; v[11] = 5 ; // Ici déclenchement d’une exception // car l’indice est trop grand } catch (VectLimite lim) // Traitement de l’exception cout << "exception cas limite" << endl ; exit (-1) ; // Sortie du programme exception cas limite

Faire les questions 3-4 du support de cours

Exemple (cas limite) // déclaration - définition des deux classes pour les exceptions class VectLimite { public : int hors ; // valeur de l'indice hors limites VectLimite (int i) { hors = i ; } } ; class VectCreation int nb ; // nombre éléments demandes VectCreation (int i) { nb = i ; } Attention: Attributs publics!!

Exemple (cas limite) // Redéfinition du constructeur de la classe Vect Vect::Vect (int n) { if (n <= 0) { // anomalie VectCreation pbCreation(n) ; throw pbCreation ; } // construction si n est correct adr = new int [n] ;

Exemple (cas limite) // surcharge de l'opérateur [] int & Vect::operator [] (int i) { if (i<0 || i>nelem) { // anomalie VectLimite pbLimite(i) ; throw pbLimite ; } return adr [i] ; // fonctionnement normal

Exemple (cas hors intervalle) // Programme exemple pour intercepter les exceptions int main () { try // Zone de surveillance Vect v(-3) ; // provoque l'exception vect_creation v[11] = 5 ; // provoquerait l'exception vect_limite } catch (VectLimite lim) // Traitement de l’exception vect_limite cout << "exception indice " << lim.hors << " hors limites " << endl ; exit (-1) ; catch (VectCreation crea) // Traitement de l’exception vect_creation { cout << "exception creation vect nb elem = " << crea.nb << endl ; exception creation vect nb elem = -3

Faire les questions 5-6 du support de cours. Faire le diagramme de classe final.