Il y a plusieurs façons dont vous pouvez aborder ce sujet. Une façon, peut-être la plus lourde en termes de nouveau code que vous auriez besoin d'écrire, serait de lancer une exception personnalisée de chacune de vos méthodes d'aide. Ensuite, vous pourriez attraper chaque exception spécifique dans un bloc séparé.
Mais ce que je pourrais recommander ici est que vous simplement envelopper chacun des deux appels à vos méthodes d'assistance dans try-catch
blocs séparés:
try {
readFile(path);
} catch (IOException e) {
// handle first exception here
}
// more code
try {
convert(file)
} catch (IOException e) {
// handle second exception here
}
Ceci est assez propre et ne nécessite pas beaucoup de refactoring. Si vous continuez à rencontrer ce problème, envisagez éventuellement de créer des exceptions personnalisées pour votre application. Si vous regardez plusieurs bibliothèques Java, vous verrez qu'elles utilisent souvent leurs propres exceptions personnalisées.
Si vous souhaitez utiliser l'exception personnalisée, vous pouvez en définir une, par ex.
public class FileReadIOException extends Exception {
public FileReadIOException(String message) {
super(message);
}
}
puis l'utiliser:
private static String readFile(String path) throws FileReadIOException {
try {
String lineSeparator = System.getProperty("line.separator");
List<String> lines = Files.readAllLines(Paths.get(path));
}
catch (Exception e) {
throw new FileReadIOException(e.getMessage());
}
}
try {
readFile(path);
// more code
convert(file)
} catch (FileReadIOException e) {
// handle first exception here
} catch (SomeOtherException e) {
// handle second exception here
}
Le code ci-dessus montrant exception personnalisée est un peu artificiel, parce que la réalité est que tout votre code est de lancer IOException
. Créer des exceptions personnalisées dans votre cas n'ajoute pas beaucoup de valeur, car elles lancent déjà (légitimement) un IOException
. Je ne suis pas sûr que cela n'a pas de sens de gérer un seul type d'exception. Plus généralement, si vous travailliez sur une grande application d'entreprise, vous utiliseriez des exceptions personnalisées pour gérer les situations qui ne fonctionnent pas dans votre propre code personnalisé.
Créez votre propre exception puis –
Appelez les deux méthodes dans des blocs try/catch séparés. –
ou utilisez le même bloc et vérifiez le message d'erreur via equals ou contains pour vous assurer que l'exception a bien été levée. – Acewin