« Programmation C sharp/Les exceptions » : différence entre les versions

Contenu supprimé Contenu ajouté
Aucun résumé des modifications
m Formatage, ajout de code
Ligne 26 :
}
 
Le bloc <ttcode>try</ttcode> est suivi d'un nombre quelconque de bloc <ttcode>catch</ttcode> (éventuellement aucun) attrapant différents types d'exception, et éventuellement d'un bloc <ttcode>finally</ttcode> qui sera toujours exécuté quoi qu'il se passe.
 
Exemple :
Ligne 54 :
== Libérer des ressources ==
 
Un bloc <ttcode>finally</ttcode> est utile pour libérer des ressources à la fin d'un traitement, qu'une erreur ait eu lieu ou non.
 
Exemple :
Ligne 70 :
</source>
 
Cependant, les classes implémentant l'[[Programmation C sharp/Interfaces|interface]] <ttcode>IDisposable</ttcode> ont une méthode <ttcode>Dispose()</ttcode>, et peuvent être utilisées avec le mot clé <ttcode>using</ttcode> :
<source lang="csharp">
using( Bitmap bm = new Bitmap(100,100) ) // <- objet IDisposable
Ligne 79 :
 
== Lancer une exception ==
En cas d'erreur dans une méthode d'un programme (arguments invalides, ...), il est possible de lancer une exception en utilisant le mot clé <ttcode>throw</ttcode>.
 
La syntaxe est la suivante :
throw ''objet_exception'';
Où ''objet_exception'' est une instance de la classe <ttcode>Exception</ttcode> ou de l'une de ses sous-classes.
 
En général, l'objet exception est alloué en même temps qu'il est lancé :
Ligne 90 :
La pile d'appel est enregistrée dans l'objet exception au moment où il est lancé.
 
Dans un gestionnaire d'exceptions, il est possible de relancer l'exception attrapée en utilisant l'instruction <ttcode>throw</ttcode> sans argument. Ce qui est utile quand le gestionnaire ne gère que partiellement l'erreur qui devra être totalement traitée par un autre gestionnaire d'exceptions.
Dans ce cas, la pile d'appel d'origine est conservée.
 
Ligne 112 :
Lancer une exception signale une erreur particulière. Si aucune [[Programmation C sharp/Les classes|classe]] d'exception ne convient ou n'est suffisamment précise, ou si l'exception doit comporter des informations supplémentaires, il est possible de créer une nouvelle classe d'exception.
 
Pour cela, il faut [[Programmation C sharp/Héritage de classes|dériver la classe]] <ttcode>Exception</ttcode> ou l'une de ses sous-classes. Par convention, toutes ces sous-classes ont un nom se terminant par <ttcode>Exception</ttcode>.
 
Exemple :