Les exceptions (exceptions) sont un mécanisme de gestion des erreurs en Java. Chaque objet lancé est une classe dérivée de Throwable. Il existe deux catégories principales :
Exception, sauf RuntimeException) : doivent être explicitement gérées ou déclarées dans la signature de la méthode via throws.RuntimeException) : il n'est pas nécessaire de les gérer explicitement, elles peuvent survenir à tout endroit (par exemple, NullPointerException).Quand utiliser ?
public void readFile(String path) throws IOException { // Checked exception — nécessite un traitement Files.readAllLines(Paths.get(path)); } public void divide(int a, int b) { int c = a / b; // Unchecked — ArithmeticException }
Un méthode ne déclarant pas throws peut-elle lancer une checked exception ?
Réponse : Non, le compilateur n'autorise pas à lancer une checked exception sans déclaration dans la signature de la méthode (throws). Mais une unchecked exception peut être lancée sans avertissement.
void foo() { throw new IOException(); // Erreur de compilation }
Histoire
Dans une banque en ligne, le client a décidé d'ignorer le traitement des
SQLExceptions, utilisant des wrappers unchecked. Cela a conduit à des erreurs invisibles lors de la mise à jour du driver, provoquant une désynchronisation des données.
Histoire
Dans une application de journalisation, le fichier de log restait verrouillé en raison d'une checked exception non gérée (
FileNotFoundException), qui a été "perdue" dans la chaîne d'appels, l'erreur n'a pas été traitée à temps, et l'application ne pouvait plus écrire dans les logs.
Histoire
Dans une plateforme de trading, l'équipe a mis en œuvre un catch global(Throwable) pour "ne jamais tomber". En fin de compte, des exceptions unchecked critiques étaient masquées — l'application continuait à fonctionner dans un état incohérent, entraînant des bogues complexes et des pertes de données.