J'ai plusieurs (plus de 20) méthodes (getXXX()
) qui peuvent lever une exception (un NotCalculatedException
) lorsqu'elles sont appelées.Refactorisation d'une méthode qui appelle d'autres méthodes qui lancent Exception
Dans une autre méthode, j'ai besoin d'accéder aux résultats donnés par ces méthodes. Pour le moment, j'ai un code horrible, qui ressemble à:
public void myMethod() {
StringBuffer sb = new StringBuffer();
// Get 'foo' result...
sb.append("foo = ");
try {
sb.append(getFoo());
} catch (NotCalculatedException nce) {
sb.append("not calculated.");
}
// Get 'bar' result...
sb.append("\nbar = ");
try {
sb.append(getBar());
} catch (NotCalculatedException nce) {
sb.append("not calculated.");
}
...
}
Sans modifier les getXXX
méthodes (donc ils doivent garder leur throws NotCalculatedException
), comment voulez-vous factoriser/Simplifions myMethod()
pour le rendre semble mieux?
S'il vous plaît noter que ce projet est encore en utilisant Java 1.4 :(
EDIT
Je ne peut mettre toutes les getXXX()
méthodes dans le bloc try { ... }
, comme StringBuffer sera être incomplet si une méthode lance NotCalculatedException
public void myMethod() {
StringBuffer sb = new StringBuffer();
try {
sb.append("foo = ");
sb.append(getFoo());
sb.append("\nbar = ");
sb.append(getBar());
} catch (NotCalculatedException nce) {
sb.append("not calculated.");
}
...
}
En d'autres termes, si getFoo()
jette une NotCalculatedException
, je veux avoir ce genre de sortie:
foo = not calculated
bar = xxx
...
Si je mets tout en un seul try { ... }
, j'aurai cette sortie, que je ne suis pas vouloir obtenir:
foo = not calculated
Oui, je pensais à l'aide de la réflexion, mais je n'aime vraiment pas cette solution (dans ce cas) ... – romaintaz