[Débutant]Comment gérer les erreurs simplement ?
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:
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... :(