2
7
Prise en charge d`Exception :
La commande «try»
Afin de s`occuper d`une exception quand elle
arrive, l`on met la ligne qui lance l`exception dans un
block
try
Un block
try
est suivie de un ou plus de clause
catch
qui
s`occupent de l`exception
Chaque clause catch à une type exception associé, et
est dénommé une «
exception handler»
Quand une exception prend place, la 1ère clause catch
dont le type d`exception correspond s`en occupe
Voir ProductCodes.java (page xxx) 8
ProductCodes.java
import cs1.Keyboard;
public class ProductCodes
{// Counts the number of product codes that are entered with a
// zone of R and district greater than 2000.
//-----------------------------------------------------------------
public static void main (String[] args)
{String code;
char zone;
int district, valid = 0, banned = 0;
System.out.print ("Enter product code (XXX to quit): ");
code = Keyboard.readString();
Continued…
9
ProductCodes.java
while (!code.equals ("XXX"))
{try
{zone = code.charAt(9);
district = Integer.parseInt(code.substring(3, 7));
valid++;
if (zone == 'R' && district > 2000)
banned++;
}
catch (StringIndexOutOfBoundsException exception)
{System.out.println ("Improper code length: " + code);
}
catch (NumberFormatException exception)
{System.out.println ("District is not numeric: " + code);
}
System.out.print ("Enter product code (XXX to quit): ");
code = Keyboard.readString();
}
System.out.println ("# of valid codes entered: " + valid);
System.out.println ("# of banned codes entered: " + banned); }} 10
La Clause finally
La commande try peut avoir une clause optionnelle suivant
les clause catch, dénommé par le mot réservé finally
Le code dans la clause finally sont toujours exécuté
Si il n`y a pas d`exception de lancé, le code dans la
clause finally est exécuté après que le code du block try
ai été exécuté
Si il y a eu une expection de lancée,If an exception is
generated, le code dans la clause finally est exécuté
après que le code de la clause catch approprié ai été
exécuté
11
Propagation d`exception
Une exception peut-être prise en charge à un niveau plus
haut si il n`est pas approprié de s`en occuper quand elle
arrive
Les exceptions se
propagent
vers le haut dans la
méthode appelant la hiérarchie jusqu`a ce que elles sont
attrapée et prises en charge ou jusqu`a ce que il
atteigne la méthode main
Un block try qui contient un appel à la méthode dans
laquelle une exception est lancé, peut attraper celle-ci
Voir Propagation.java (page xxx)
Voir ExceptionScope.java (page xxx)
12
Propagation.java
public class Propagation
{
// Invokes the level1 method to begin the exception demonstation.
static public void main (String[] args)
{ExceptionScope demo = new ExceptionScope();
System.out.println("Program beginning.");
demo.level1();
System.out.println("Program ending.");
}
}