Bonjour à tous,
Comme beaucoup ici, je débute en Java. Je suis en train de regarder le système de fonctionnement des levées d'exception.
J'ai compris dans les grandes lignes le fonctionnement. Mais certains détails m'échappent. Par exemple sur cet extrait de code:
Dans le cas de la première méthode, je lève l'exception IllegalArgumentException mais Eclipse ne m'oblige pas à spécifier cette levée d'exception dans la signature (pas besoin de throws IllegalArgumentException).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 public void setAge(int age) { try { if (age < 15) { MON CODE } } catch (Exception e) { throw new IllegalArgumentException("Interdit au moins de 15 ans."); } this.age = age; } public void setAge(String age) throws ParseException { try { setAge(Integer.parseInt(age)); } catch (NumberFormatException e) { throw new ParseException("Doit être un nombre", 42); } }
A l'inverse, dans la méthode surchargée de setAge, Eclipse m'oblige à ajouter "throws ParseException".
Pourquoi cette différence de traitement sur des méthodes quasi identique?
Le fait que IllegalArgumentException soit une erreur héritant de RuntimeException et ParseException de Exception a-t-il un lien?
Merci d'avance pour vos éclaircissement.
Damien
Partager