Il existe en java deux catégories d'exceptions :
transparent
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
% 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 %
transparent
// 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()); } }