/** * * un exemple des blocs: try-catch-finally * * @author Paul S. Wang (réf. description de cours: p.260) * @author Mohamed Lokbani (ajout de ArrayIndex....Exception + l'emballage!) * * @version 1.1 */ import java.io.*; class exo2 { public static void main (String args[]) throws IOException { FileInputStream infile=null; // un flux en entrée lecture binaire. File fictmp=null; // pour fichier boolean error=false; try { /* ouvre l'argument passé sur la ligne de commande, comme un flux en entrée pour une lecture binaire. */ infile = new FileInputStream(args[0]); /* ouvre un fichier temporaire "tmp_fic.txt". */ fictmp = new File("tmp_fic.txt"); } /* lecture dans un tableau d'un élément inexistant. */ catch (ArrayIndexOutOfBoundsException e) { System.err.println("Argument inexistant!"); error = true; } /* un fichier non trouvé pour le flux mode lecture binaire. */ catch (FileNotFoundException e) { System.err.println("Erreur à l'ouverture du fichier: "+args[0]); error = true; } /* une erreur entrée/sortie pour le fichier temporaire. */ catch (IOException e) { System.err.println("Erreur à l'ouverture du fichier: \"tmp_fic.txt\""); error = true; } /* une méthode finally qui vérifie ... */ finally { /* si le flux mode lecture binaire a été ouvert, il sera fermé. */ if (infile != null) infile.close(); /* si le fichier a été ouvert, il sera effacé. */ if (fictmp != null) fictmp.delete(); /* si une erreur (un catch) quelconque s'est produite, on sort immédiatement du programme. */ if (error) System.exit(1); } // tout est ok! System.exit(0); } }