Pour un projet que je travaille, nous avons quelques blocs qui ressemblent à ceci:Remplacement d'exceptions génériques avec des types d'exceptions plus spécifiques?
Classe A:
try {
callSomeMethod();
}
catch (Exception e) {
throw new SomeCustomExceptionTypeForMetrics("");
}
Cependant, je suis chargé de remplacer tous les cas où nous attrapons des exceptions génériques avec seulement les types d'exceptions "attendus" spécifiques.
Le problème est callSomeMethod() a quelque chose comme ça
Classe B:
try {
if (someCondition...) {
}
else {
//failed
throw new RuntimeException("Timeout while waiting for results")
}
}
catch(InterruptedException e) {
// do some failure stuff here
throw new RuntimeException("Something here");
}
Idéalement, mon groupe m'a demandé de changer peu que possible, et je ne peux pas changer la signature pour callSomeMethod(), mais ils ne veulent pas non plus attraper une exception RuntimeException dans la classe A puisqu'ils ne veulent pas capturer n'importe quel type d'exception RuntimeException - seulement ceux que nous excluons de la classe B.
Quelle est la meilleure façon de gérer cela?
Remplacez ces 'RuntimeExeption's par quelque chose de plus spécifique. Créez des classes personnalisées si nécessaire. –
Ai-je bien compris: Vous êtes censé attraper RuntimeExceptions mais seulement si elles ont explicitement été lancées dans la classe B dans le code java avec "throw new RuntimeException()" tout en ignorant celles qui pourraient provenir d'ailleurs? –
Est-ce que modifier la classe B est une option? – slambeth