Prenez cela comme exemple:Java - plaids ne fonctionne pas pour un sous-type d'une exception qui est gérée
public class TestClass {
public static void test() throws SSLHandshakeException {
throw new SSLHandshakeException("I'm a SSL Exception");
}
public static void main(String[] args) throws SSLHandshakeException {
try {
test();
} catch (IOException ioe) {
System.out.println("I`m handling IO exception");
}
}
}
Donc, j'ai ma méthode d'essai dans lequel je suis juste jeter un SSLHandshakeException
qui est un sous-type de IOException
.
La sortie pour ceci est "I`m handling IO exception".
Pourquoi cela se produit-il? Je m'attendais à ce que ma méthode jette le SSLHandshakeException
. Y at-il une règle que catch
est plus important que throws
?
Je veux juste éviter d'utiliser
try {
test();
} catch (SSLHandshakeException se) {
throw se;
} catch (IOException ioe) {
System.out.println("I`m handling IO exception");
}
Parce que je considère qu'il est moins lisible
Ok, je l'ai maintenant.La chose est que j'ai besoin de ma méthode principale (dans ce cas) pour savoir comment gérer les IOExceptions autres que SSLHandshakeException et passer la responsabilité à d'autres méthodes d'appel. –
J'ai modifié en fonction de votre modification à la question. Ce serait idéal si les exceptions que vous devez attraper sont des * autres * sous-classes de IOException. Alors vous pouvez juste attraper ceux et les exceptions de SSL passera par. Sinon, c'est le chemin à parcourir. – RobCo