next up previous contents
suivant: try bloc, catch et monter: Exceptions précédent: Exceptions   Table des matières

Throwable

Les exceptions sont des objets qui sont des instances de Throwable.

Il existe en java deux catégories d'exceptions :



transparent
Checked et Unchecked


import java.io.*;
import java.util.Vector;
public class ListeInteger{
    private Vector v;
    private static final int size =10;
    public ListeInteger(){
        v=new Vector(size);
        for(int i=0; i<size;i++)
            v.addElement(new Integer(i));
    }
    public void writeListe(String st){
        PrintWriter out = new PrintWriter(new FileWriter(st));
        for(int i=0; i<size; i++)
            out.println("["+i+"]"+v.elementAt(i));
        out.close();
    }
}


L'exception IOException peut être lancée dans new FileWriter(st) (en cas d'échec de l'ouverture du fichier). Cette exception est une checked exception

Par contre, la méthode elementAt de la classe Vector peut lancer l'exception unchecked ArrayIndexOutOfBoundsException.

Le programme ne se compile donc pas et donnera le résultat :



transparent
Résultat :


% javac ListeInteger.java 
ListeInteger.java:12: Exception java.io.IOException 
must be caught, or it must be declared in the throws 
clause of this method.
    PrintWriter out = new PrintWriter(new FileWriter(st));
                                          ^
1 error   
%


Il faut donc, soit traiter cette exception dans la méthode, soit la déclarer dans l'en-tête de la fonction :



transparent
Solution


// changer la déclaration
    public void writeListe(String st)
        throws IOException{
        PrintWriter out = new PrintWriter(new FileWriter(st));
        ...
// traiter l'exception
    public void writeListe(String st){
        try{
            PrintWriter out = new PrintWriter(new FileWriter(st));
            for(int i=0; i<size; i++)
                out.println("["+i+"] : "+v.elementAt(i));
            out.close();
        } catch (IOException e){
            System.err.println("Exception: "+e.getMessage());
            System.err.println("Exception: "+e.toString());
        }
    }


La classe Throwable contient la méthode getMessage qui retourne un message associé à l'exception et comme tous les descendants de Object la méthode toString. Ici, getMessage donnera le nom du fichier sur lequel l'ouverture a échouée et toString retournera, par exemple, java.io.FileNotFoundException: suivi du nom du fichier. Cette classe contient aussi d'autres méthodes pour le traçage.

next up previous contents
suivant: try bloc, catch et monter: Exceptions précédent: Exceptions   Table des matières
Hugues Fauconnier 2002-01-11