1
Licence Informatique - Semestre 2 - Algorithmique et Programmation
Erreurs d'exécution (1/3)
Dans tout programme, il peut y avoir des erreurs d'exécution non critiques
Exemple : le programme est en train de lire un fichier et il y a un problème
d'accès au disque dur.
NB : il ne s'agit ni d'erreur de programmation, que le compilateur peut détecter, ni
d'erreur critique qui empêche la suite de l'exécution.
Quand il y a une erreur non critique, on voudrait que le programme ne plante pas
complètement et puisse récupérer de cette erreur et continuer.
Exemple : s'il y a un échec de lecture d'un fichier, le programme doit continuer en
retentant la lecture ou en passant à autre chose.
2
Licence Informatique - Semestre 2 - Algorithmique et Programmation
Erreurs d'exécution (2/3)
Les erreurs se produisent dans un contexte d'exécution mais peuvent
influer sur les contextes englobant.
programme EditeurDeTexte
...
début
si (clic sur le bouton «ouvrir fichier») alors
...
chaine c ← lireFichier(...);
...
fin chaine fonction lireFichier(chaine nomFichier)
...
début
chaine d ← lireLigne(...);
...
fin chaine fonction lireLigne(chaine nomFichier, entier ligne)
...
début
...
// accès disque
...
fin
3
Licence Informatique - Semestre 2 - Algorithmique et Programmation
Erreurs d'exécution (3/3)
une erreur
un contexte d’exécution
le contexte d’exécution qui
traite l'erreur
Le principe d’endiguement :
- un programme est une hiérarchie de contextes d’exécution
- une erreur d'exécution récupérable doit être récupérée à un certain
niveau pour éviter la plante complète du programme
- pour déléguer le traitement d'une erreur d'un contexte d'exécution à
l'autre, il faut pouvoir transférer une description de l'erreur (exception)
main
4
Licence Informatique - Semestre 2 - Algorithmique et Programmation
Une exception décrit une erreur : son type, les données qui ont provoqué
l'erreur, etc
En Java, il existe tout un tas de types d'exception : IOException,
ArithmeticException,ArrayIndexOutOfBoundsException, …
En Java, il est possible de créer ses propres types d'exception :
Exception
/** Exception lancée en cas de bombardement nucléaire */
public class AtomicBombingException extends Exception{
public AtomicBombingException(){
super("Erreur due à une destruction totale de l'ordinateur");
}
}
Exception e = …
System.out.println(e.getMessage()); // écrit le message de l'erreur
e.printStackTrace(); // affiche la trace de l'exécution qui a mené à l'erreur
5
Licence Informatique - Semestre 2 - Algorithmique et Programmation
Lancement des exceptions
Si on écrit une fonction qui peut lancer une exception, on doit le préciser dans
son en-tête :
String lireLigne(String nomFichier, int ligne) throws IOException
{
...
if(...){ // accès disque impossible
throw new IOException("Impossible d'accéder à ce #@$! disque");
}
...
}
1 / 12 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !