Cela permettrait de déterminer un comportement différent pour des exceptions différentes, par exemple pour les englober dans une exception commune, par exemple :
On pourrait utiliser directement ceci (exemple avec la syntaxe de Uther que je trouve bien plus clair) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public static void method() throws MyException { try { // Code pouvant renvoyer des IOException / SQLException } catch (IOException e) { throw new MyException("erreur method", e); } catch (SQLException e) { throw new MyException("erreur method", e); } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public static void method() throws MyException { try { // Code pouvant renvoyer des IOException / SQLException } catch (IOException, SQLException : Exception e){ throw new MyException("erreur method", e); } }
Tu vas me dire on peut faire ceci :
Oui mais ce n'est pas exactement la même chose : ici tu vas également récupérer toutes les RuntimeExceptions or ce n'est pas forcément voulu car elle représente plus une erreur dans le programme et qu'on aurait voulu les laisser remonter normalement...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public static void method() throws MyException { try { // Code pouvant renvoyer des IOException / SQLException } catch (Exception e){ throw new MyException("erreur method", e); } }
En fait actuellement il faudrait faire ceci afin d'ignorer les RuntimeException :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public static void method() throws MyException { try { // Code pouvant renvoyer des IOException / SQLException } catch (RuntimeException e) { throw e; // on remonte les RuntimeExceptions }catch (Exception e){ throw new MyException("erreur method", e); } }
De même cette solution n'est plus possible si tu as plusieurs types d'exception à gérer différemment :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 try { // ... } catch (SQLException, IOException : Exception e){ // ... exceptions dû à une ressource inexistante ... } catch (IllegalArgumentException, IllegalStateException : Exception e){ // ... exception dû à une mauvaise utilisation ... }
a++









Répondre avec citation
















Partager