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

Contenu supprimé Contenu ajouté
Grunge (discussion | contributions)
mAucun résumé des modifications
Ligne 11 :
 
Une exception est levée grâce à l'instruction ''throw'' :
<source lang="java">
 
if (k<0)
throw new EstNegatifException("Message");
</source>
 
Une exception peut être traitée directement par la méthode dans laquelle elle est levée, mais elle peut également être envoyée à la méthode appelante grâce à l'instruction ''throws'' (à ne pas confondre avec ''throw'') :
<source lang="java">
 
public void maMethode(int entier) throws IOException
{
//code de la methode
}
</source>
 
Dans cet exemple, si une exception de type ''IOException'' est levée durant l'exécution de ''maMethode'', l'exception sera envoyée à la méthode appellant ''maMethode'', qui devra la traiter.
 
Ligne 39 :
 
Exemple :
<source lang="java">
 
public String lire(String nomDeFichier) throws IOException
{
Ligne 62 :
}
}
</source>
 
Le bloc <code>catch (FileNotFoundException fnfe)</code> capture toute exception du type <code>FileNotFoundException</code> (cette classe dérive de la classe <code>IOException</code>).
 
Ligne 76 :
 
Exemple d'ordre incorrect :
<source lang="java">
try{
FileReader lecteur = new FileReader(nomDeFichier);
Ligne 90 ⟶ 91 :
fnfex.printStackTrace();
}
</source>
 
L'ordre correct est le suivant :
<source lang="java">
try{
FileReader lecteur = new FileReader(nomDeFichier);
Ligne 105 ⟶ 107 :
ioex.printStackTrace();
}
</source>
 
=== Sous-classes et clause throws ===
Une autre source de problèmes avec les sous-classes d'exception est la clause <code>throws</code>. Ce problème n'est pas détecté à la compilation.
 
Exemple :
<source lang="java">
public String lire(String nomDeFichier) throws FileNotFoundException
{
Ligne 124 ⟶ 127 :
}
}
</source>
 
Cette méthode ne lancera jamais d'exception de type <code>FileNotFoundException</code> car cette sous-classe de <code>IOException</code> est déjà capturée.
 
Ligne 131 ⟶ 134 :
 
Exemple:
<source lang="java">
public String lire(String nomDeFichier) throws IOException
{
Ligne 146 ⟶ 150 :
}
}
</source>
 
== Catégorie d'objet lancé ==
Le chapitre traite des exceptions, mais en fait tout objet dont la classe est ou dérive de la classe <code>Throwable</code> peut être utilisé avec les mots-clés <code>throw</code>, <code>throws</code> et <code>catch</code>.
Ligne 159 ⟶ 163 :
 
Exemple :
<source lang="java">
public class HttpException extends Exception
{
Ligne 170 ⟶ 175 :
{return code;}
}
</source>
Une instance de cette classe peut ensuite être lancée de la manière suivante :
<source lang="java">
public void download(URL url) throws HttpException
{
Ligne 177 ⟶ 183 :
throw new HttpException ( 404, "File not found" );
}
</source>
 
et capturée comme suit :
<source lang="java">
 
try
{
Ligne 188 ⟶ 194 :
System.err.println("Erreur "+http_ex.getHttpCode());
}
</source>
 
[[Catégorie:Programmation Java (livre)]]