Mon Dieu mais quelle horreur !
Contre à 2^1024 %, pour la raison invoquée ici :
Que se passe-t-il quand on a des Exceptions de type très différents ? Tout ce que le compilateur peut faire, c'est rechercher un ancêtre commun à
toutes les exceptions (au pire:
Exception, qui est la classe de base de toutes les exceptions) et dans ce cas là, la proposition n'a strictement aucun intérêt.
Sinon, en C# on peut faire ça
(*) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| try
{
...
}
catch (Exception e)
{
ExceptionA a = e as ExceptionA;
if (a != null)
{
// cette portion de code est exécutée, ssi e peut être casté en ExceptionA
...
}
if (e is ExceptionA || e is ExceptionB)
{
// exécuté si e peut être casté en ExceptionA ou ExceptionB
}
} |
C'est un peu dans l'esprit de départ, non ? (appliquer un même traitement à toute une famille d'exceptions, mais pouvoir appliquer des traitements spécifiques sur certains types d'exceptions) Et ça reste relativement lisible.
Il me semble qu'il est possible de faire sensiblement la même chose en Java (mais je ne sais plus comment).
(*) non, ce n'est pas un troll mais un élément de comparaison. On n'est pas dans la taverne.
Partager