• Aucun résultat trouvé

0-M02 – Introduction `a la programmation Introduction `a l’algorithmique Cours n

N/A
N/A
Protected

Academic year: 2022

Partager "0-M02 – Introduction `a la programmation Introduction `a l’algorithmique Cours n"

Copied!
8
0
0

Texte intégral

(1)

0-M02 – Introduction ` a la programmation Introduction ` a l’algorithmique

Cours n°5 Gestion des exceptions

Camille Coti

[email protected]

IUT de Villetaneuse, d´epartement R&T

2011 – 2012

(2)

Principe des exceptions

Remonter les erreurs rencontr´ees par une fonction `a l’appelant Simplification du code

Gestion des erreurs dans une classe s´epar´ee

Pour cela une m´ethode qui rencontre une erreurl`eve une exceptionqui est trait´ee par l’appelant.

Types d’exceptions :

Erreurs graves : provoquent l’arrˆet du programme Classejava.lang.Error

Erreurs devant ˆetre trait´ees Classejava.lang.Exception

Erreurs ne devant pas n´ecessairement ˆetre trait´ees

Classejava.lang.RuntimeException(h´erite dejava.lang.Exception)

(3)

M´ ecanisme

On d´efinit une m´ethode qui effectue une op´eration ”`a risque” (d´ebordement de tampon, valeurs ind´efinies, d´epassement de limites d’un tableau...)

Si quelque chose se passe mal : la m´ethodel`eve une exception

L’appelantattrappe cette exception

Possibilit´e de traiter l’erreur, de la faire remonter, de faire autre chose...

Plusieurs types d’exceptions possibles pour une seule m´ethode Trairement selon l’erreur rencontr´ee

On r´ecup`ere des informations sur l’exception lev´ee

(4)

M´ ethode qui l` eve une exception

On d´eclare qu’une m´ethode valeverune exception

Mot-cl´ethrows+ type d’exception dans la d´eclaration de la m´ethode

Exemple :

1 p u b l i c i n t f a c t o r i e l l e ( i n t n ) t h r o w s P a s D e f i n i {

2 /∗ . . . ∗/

3 }

La m´ethode factorielle peut lever l’exceptionPasDefinien cas de probl`eme (n!

non d´efini pourn <0)

(5)

Lev´ ee d’exception

Lorsque quelque chose ne se passe pas bien Onl`evel’exception

Mot-cl´ethrow+ instanciation de l’exception

1 p u b l i c i n t f a c t o r i e l l e ( i n t n ) t h r o w s P a s D e f i n i { 2 i f( n < 0 ) {

3 throw new P a s D e f i n i ( ) ;

4 } e l s e {

5 i n t i , r e s ;

6 r e s = 1 ;

7 f o r( i = 1 ; i <= n ; i++ ) {

8 r e s ∗= i ;

9 }

10 r e t u r n r e s ;

11 }

12 }

(6)

Attrappage d’exception

On utilise la syntaxetry ... catch

Bloctry: ex´ecution des instructions qui peuvent lever une exception Bloc(s)catch: comportement suivi si une exception est lev´ee

1 i n t nb , r e s ;

2 Sys tem . o u t . p r i n t l n ( ” S a i s i r un nombre ” ) ; 3 nb = C l a v i e r . l i r e I n t ( ) ;

4 t r y {

5 r e s = f a c t o r i e l l e ( nb ) ;

6 }

7 c a t c h( P a s D e f i n i e ) {

8 System . o u t . p r i n t l n ( ” V a l e u r non d e f i n i e ” ) ;

9 }

Si plusieurs exceptions possibles : plusieurs blocscatch

(7)

Cr´ eer un nouveau type d’exception

Suivant le type d’erreur, l’exception h´erite d’une classe m`ere Classejava.lang.Error,java.lang.Exceptionou java.lang.Exception

Elles h´eritent toutes de l’interfaceThrowable

Exemple de m´ethode disponible : printStackTrace() Exemple :

1 c l a s s P a s D e f i n i e x t e n d s E x c e p t i o n { 2 p u b l i c i n t nb ;

3 p u b l i c P a s D e f i n i ( ) {

4 Syste m . o u t . p r i n t l n ( ” Nombre i n d e f i n i ” ) ;

5 }

6 p u b l i c P a s D e f i n i ( i n t n ) {

7 nb = n ;

8 Syste m . o u t . p r i n t l n ( n + ” i n d e f i n i ” ) ;

9 }

10 }

(8)

Exemples d’exceptions courantes

H´eritent de java.lang.Error TypeMismatchException IOError

H´eritent de java.lang.Exception IllegalAccessException ClassNotFoundException InterruptedException

H´eritent de java.lang.RuntimeException NullPointerException

ArithmeticException ClassCastException IndexOutOfBoundsException

Références

Documents relatifs

4 La programmation ´el ´ementaire en C/C++. 5 Les

I L’éditeur reconnait les commandes et les colore en bleu I Les commandes sont exécutées avec cmd← - ligne par ligne I Les résultats de commandes peut être stockées dans des.

Pour tester si cette fonction et la précédente fonctionnent correctement, vous pourrez exécuter votre programme en choisissant dans un permier temps de saisir une nouvelle entrée,

La condition d’arrˆ et d’une boucle est une condition (une expression bool´ eenne) qui d´ etermine le moment o` u une boucle doit arrˆ eter d’ex´ ecuter le

Les variables sont visibles uniquement dans la fonction, la proc´ edure ou le programme dans lequel elles ont ´ et´ e d´ eclar´ ees, et dans aucune des fonctions ou proc´ edures

Compilation et ex´ ecution Le langage Java Classes Cr´ eation d’une classe Constructeur et destructeur H´ eritage. 1 Compilation et

Documentation Java Surcharge des m´ ethodes Attributs et m´ ethodes de classe Les collections Les listes Les ensembles Outils sur les

´ Ecrit le tableau de caract` eres tab sur le flux de sortie courant public void write( String s ) throws IOException. ´ Ecrit la chaˆıne de caract` eres s sur le flux de