C'est juste une notion d'héritage : Comme RuntimeException hérite de Exception, on peut utiliser un catch(Exception) pour attraper une RuntimeException...
En ce qui concerne :
try{}catch(FileNotFoundException e){}
Ce code ne compile pas car le compilateur détecte que le catch est totalement inutile : dans le code du bloc try (vide) il n'y a aucune méthode qui déclare renvoyé une FileNotFoundException, donc l'exception ne pourra pas être renvoyé (je rappelle que pour remonter une checked-exception il faut obligatoirement la déclarer dans la signature de la méthode).
Toutefois cette vérification n'est pas présente sur les RuntimeException car il n'est pas possible de savoir si une méthode peut remonter une uncheked-exception ou non. De ce fait la vérification n'est pas effectué non plus pour les catch(Exception) car une unchecked-exception peut toujours remonter...
a++
Partager