Est-ce que Exception elle-même est checked ?
Bonjour à tous
Je suis en train de passer ma certif et je suis devant un os :
Etant donné cette classe
Code:
1 2 3 4 5 6 7 8 9 10 11
|
public class TryTheTry {
public static void main(String[] args) {
try{}
//insert code here
{}
finally{ }
}
}
class CheckedException extends Exception{}
class UncheckedException extends RuntimeException{} |
Que mettre à la place de //insert code here pour que cette classe compile, choisissez toutes les réponses qui conviennent.
- catch(Exception e)
- catch(CheckedException e)
- catch(RuntimeException e)
- catch(UncheckedException e)
La réponse est un peu troublante
La 1, 3 et 4 sont les bonnes réponses.
En effet la 2 ne compile pas car CheckedException est considéré comme checked (elle n'hérite pas de RuntimeException) donc le compilateur exige que le bloc try envoie cette exception ou invoque une méthode qui déclare pouvoir l'envoyer.
Dans ce cas et si comme moi vous avez un peu tendance à vous poser les questions jusqu'au bout vous vous dites que Exception n'est pas vu comme une exception checked parceque la 1 compile.
Ok mais alors ...
Ca ne compile pas
Code:
public void doStuff { throw new Exception(); }
alors que celui la compile
Code:
public void doStuff { throw new RuntimeException(); }
De ce point de vue on a le sentiment que Exception est vu comme checked.
Donc je sais pas finalement si Exception est vu comme checked. N'hésiter pas à me faire connaitre votre point de vue.