Considérez le code suivantmanipulation IOException dans plusieurs méthodes
public class foo {
public static void main(String[] args) {
MyClass mc = new MyClass();
mc.read();
}
}
et
public class MyClass {
private BufferedWriter verb;
private String vFile;
MyClass()
{
try {
verb = new BufferedWriter(new FileWriter(vFile));
} catch(IOException e) {
System.out.println("Internal error1");
System.out.println(e.getMessage());
}
}
public void read()
{
// read a file and create an array
verb.write("Array created"); // ERROR
}
}
Comme vous pouvez le voir le write
n'est pas placé dans un bloc try..catch
. Je peux écrire un crochet pour cela, mais MyClass
a beaucoup de méthodes et verb.write
est fortement utilisé. Je peux également écrire public void read() throws IOException
pour lancer l'exception à l'appelant, main()
. Encore je dois mettre mc.read()
dans un bloc try..catch
. Depuis MyClass a de nombreuses méthodes, alors je dois les mettre tous dans un bloc catch dans le main()
.
Alors, y a-t-il une meilleure façon de gérer cela? Est-il possible de rediriger toutes les exceptions liées à verb
vers le constructeur, MyClass()
où un try..catch est défini?
OT: Pourquoi diable avez-vous une méthode nommée *** read *** qui fait le contraire: *** écrit ***? ? –
"Redirection vers le constructeur"? Que voulez-vous dire? Le constructeur s'exécute toujours en premier, et votre méthode 'read' qui écrit est exécutée plus tard. Comment imaginez-vous que vous pourriez "rediriger" quelque chose qui se passe plus tard à quelque chose qui est arrivé plus tôt? Voyage dans le temps? –
Veuillez voir la publication mise à jour. Le 'read()' lit un fichier d'entrée, puis j'écris un message dans un fichier verbeux. – mahmood