Bonsoir !

Je développe un programme qui a pour but d'analyser un fichier donné par l'utilisateur.

Je demande à l'utilisateur de saisir le chemin de son fichier, et je crée ainsi une instance de la classe Fichier.

Dans les méthodes de cette classe Fichier, je dois lire le contenu de ce fichier grâce à la méthode FileReader. Or, à chaque fois que j'appelle cette méthode, je dois gérer les exceptions (fichier inexistant ou corrompu).

Comment faire pour ne pas avoir à gérer l'exception à chaque appel du fichier, mais une fois pour toutes ?

Voilà la structure de mon programme :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import java.io.* ;
import java.util.*;
import java.text.DateFormat;
import java.text.SimpleDateFormat;

public class Fichier{
	
	String nom_ ; // Le nom du fichier
	File file_ ;
	
	/** Constructeur*/
	public Fichier(String nom){
		nom_ = nom;
		file_ = new File(nom);
		}
	
	
		
	/** Exécute le programme de nettoyage, qui supprime
	*  tous les espaces et tabulations en début de ligne*/
	private void nettoie(){
		try {
			String texte = ""; // Le texte modifié est stocké temporairement ici
			FileReader codeLu = new FileReader(nom_); // Ouvre le fichier en lecture
			int lu = codeLu.read() ; // renvoie le premier caractère (codé en int) du fichier
			while (lu != -1) {blablabla
				}
			FileWriter codeEcrit = new FileWriter(nom_); // Ouvre le fichier en écriture
			codeEcrit.write(texte); // Ecrit le texte nettoyé dans le fichier
			codeEcrit.close(); // ferme le fichier en écriture
			Console.ecrireNL("Le fichier " + nom_ + " a été nettoyé !");
			
			}
		catch (FileNotFoundException e) { // Erreur à renvoyer si l'adresse du fichier est incorrecte
			Console.ecrireNL("Le fichier "
			+ nom_ +" n'existe pas !");
			} 
		catch (IOException e) { // Autres erreurs
			Console.ecrireNL("Erreur de lecture !");
			}
		}
	
	/** Exécute le programme d'indentation, qui ajoute le nombre
	*  de tabulations nécessaires en début de ligne*/
	private void indente(){
		try {
			String texte = ""; // Le texte modifié est stocké temporairement ici
			FileReader codeLu = new FileReader(nom_); // Ouvre le fichier en lecture
			int lu = codeLu.read() ; // renvoie le premier caractère (codé en int) du fichier
			int nbTab = 0 ; // le nombre de tabulations à mettre en début de ligne est initialisé à 0
			String tabulation = ""; // permet de stocker ce nombre sous forme de String (alinéa)
			while (lu != -1) {balablabla
                        }
			FileWriter codeEcrit = new FileWriter(nom_); // Ouvre le fichier en écriture
			codeEcrit.write(texte); // Ecrit le texte indenté dans le fichier
			codeEcrit.close(); // ferme le fichier en écriture
			Console.ecrireNL(flag1 + "Le fichier " + nom_ + " a été indenté !");
			
			}
		catch (FileNotFoundException e) { // Erreur à renvoyer si l'adresse du fichier est incorrecte
			Console.ecrireNL("Le fichier "
			+ nom_ +" n'existe pas !");
			} 
		catch (IOException e) { // Autres erreurs
			Console.ecrireNL("Erreur de lecture !");
			}
		}
	
	/** Interface avec l'utilisateur*/	
	public static void main(String[] args) {
		Console.ecrireNL("Entrez le nom du fichier à indenter (avec son chemin et son extension) :");
		String nom = Console.lireMot(); // lit le nom du fichier saisi par l'utilisateur
		Fichier monFichier = new Fichier(nom); // crée un Fichier avec ce nom
		monFichier.nettoie(); // lance le programme de nettoyage
		monFichier.indente(); // lance le programme d'indentation
		}
	
	}
MAJ : J'ai testé également de mettre le try & catch dans le main ; mais à la compilation, ça renvoit des erreurs :
"Unreachable catch block for FileNotFoundException. This exception is never thrown from the try statement body" et idem pour IOException...