try {…} catch
., dont la syntaxe est la suivante.
Exemple 109. Capter une exception
public void jeLisUnFichier(String nomDeFichier) throws FileNotFoundException { try { FileReader fileReader = new FileReader(nomDeFichier); } catch (FileNotFoundException ex) { logger.error("Impossible d'ouvrir le fichier [" + nomDeFichier + "]", ex); } }
try { ... }
englobe le code susceptible de générer une exception. Si une exception est générée dans ce bloc, et que cette exception correspond à un type défini en argument d'un
catch
, alors le bloc de ce catch est exécuté.
On peut déclarer autant de blocs
catch()
que l'on veut. Le premier qui correspond à l'exception générée est exécuté, et seulement lui. Si aucun bloc
catch
ne correspond à l'exception générée, alors elle est propagée au code appelant.
On peut mettre autant de
catch
que l’on veut, chacun traitant donc un type d’expression particulier. Un seul bloc
finally
est autorisée. Voyons précisément le déroulement des opérations.
try
est exécuté.
catch
. Avant d'exécuter la suite du code, le bloc
finally
est exécuté. Il est important de noter que le contenu d'un bloc
finally
est
toujours
exécuté lors de la fin de l'exécution d'un bloc
catch
.
catch
, alors le bloc correspondant est exécuté.
catch
ne correspond à son type, alors si le bloc
finally
existe, il est exécuté, et l'exception est propagée au code appelant.
catch
ne lui correspond et qu’il n’y a pas de bloc
finally
, alors l’exception est propagée par la clause
throws
déclarée dans la méthode.
String
StringBuffer
et
StringBuilder