« Programmation Java/Exceptions » : différence entre les versions

Contenu supprimé Contenu ajouté
Aucun résumé des modifications
→‎Relancer une exception : Rôle de fillInStackTrace()
Ligne 138 :
Exemple:
<source lang="java">
public String lire(String nomDeFichier) throws IOException
{
try
{
FileReader lecteur = new FileReader(nomDeFichier);
char[] buf = new char[100];
lecteur.read(buf,0,100);
return new String(buf);
}
catch (IOException ioException) // capture IOException et ses sous-classes
{
// ... traitement partiel de l'exception ...
throw ioException; //<-- relance l'exception
}
}
</source>
 
Ligne 159 :
<source lang="java">
...
catch (SQLException sqlException) // capture SQLException et ses sous-classes
{
throw new RuntimeException("Erreur (base de données)...", sqlException);
}
...
</source>
 
La pile d'appel est remplie au moment de la création de l'objet exception.
C'est à dire que les méthodes <tt>printStackTrace()</tt> affiche la localisation de la création de l'instance.
 
Pour mettre à jour la pile d'appel d'une exception pré-existante (réutilisation pour éviter une allocation mémoire, ou relancer une exception), la méthode <tt>fillInStackTrace()</tt> peut être utilisée :
<source lang="java">
...
catch (IOException ioException) // capture IOException et ses sous-classes
{
// ... traitement partiel de l'exception ...
ioException.fillInStackTrace(); // <-- pile d'appel mise à jour pour pointer ici
throw ioException; // <-- relance l'exception
}
...
</source>