Admin Admin
Messages : 1154 Date d'inscription : 06/08/2009
| Sujet: La gestion des exceptions Sam 22 Aoû - 5:35 | |
| De nombreuses fonctions VB.NET sont susceptibles de générer des exceptions, c'est à dire des erreurs. Lorsqu'une fonction est susceptible de générer une exception, le programmeur devrait la gérer dans le but d'obtenir des programmes plus résistants aux erreurs : il faut toujours éviter le "plantage" sauvage d'une application. La gestion d'une exception se fait selon le schéma suivant :
try appel de la fonction susceptible de générer l'exception catch e as Exception e) traiter l'exception e end try instruction suivante Si la fonction ne génère pas d'exception, on passe alors à instruction suivante, sinon on passe dans le corps de la clause catch puis à instruction suivante. Notons les points suivants : · e est un objet dérivé du type Exception. On peut être plus précis en utilisant des types tels que IOException, SystemException, etc… : il existe plusieurs types d'exceptions. En écrivant catch e as Exception, on indique qu'on veut gérer toutes les types d'exceptions. Si le code de la clause try est susceptible de générer plusieurs types d'exceptions, on peut vouloir être plus précis en gérant l'exception avec plusieurs clauses catch : try appel de la fonction susceptible de générer l'exception catch e as IOException traiter l'exception e catch e as SystemException traiter l'exception e end try instruction suivante · On peut ajouter aux clauses try/catch, une clause finally : try appel de la fonction susceptible de générer l'exception catch e as Exception traiter l'exception e finally code exécuté après try ou catch end try instruction suivante Qu'il y ait exception ou pas, le code de la clause finally sera toujours exécuté. · Dans la clause catch, on peut ne pas vouloir utiliser l'objet Exception disponible. Au lieu d'écrire catch e as Exception, on écrit alors catch. · La classe Exception a une propriété Message qui est un message détaillant l'erreur qui s'est produite. Ainsi si on veut afficher celui-ci, on écrira : catch e as Exception Console.Error.WriteLine("L'erreur suivante s'est produite : "+e.Message); ... Les bases de VB.NET 32 end try · La classe Exception a une méthode ToString qui rend une chaîne de caractères indiquant le type de l'exception ainsi que la valeur de la propriété Message. On pourra ainsi écrire : catch ex as Exception Console.Error.WriteLine("L'erreur suivante s'est produite : "+ex.ToString) ... end try L'exemple suivant montre une exception générée par l'utilisation d'un élément de tableau inexistant :
' options Option Explicit On Option Strict On ' espaces de noms Imports System Module tab1 Sub Main() ' déclaration & initialisation d'un tableau Dim tab() As Integer = {0, 1, 2, 3} Dim i As Integer ' affichage tableau avec un for For i = 0 To tab.Length - 1 Console.Out.WriteLine(("tab[" & i & "]=" & tab(i))) Next i ' affichage tableau avec un for each Dim élmt As Integer For Each élmt In tab Console.Out.WriteLine(élmt) Next élmt ' génération d'une exception Try tab(100) = 6 Catch e As Exception Console.Error.WriteLine(("L'erreur suivante s'est produite : " & e.Message)) End Try End Sub End Module L'exécution du programme donne les résultats suivants : dos>exception1 tab[0]=0 tab[1]=1 tab[2]=2 tab[3]=3 0123 L'erreur suivante s'est produite : L'index se trouve en dehors des limites du tableau. Voici un autre exemple où on gère l'exception provoquée par l'affectation d'une chaîne de caractères à un nombre lorsque la chaîne ne représente pas un nombre : ' options Option Strict On Option Explicit On 'imports Imports System Public Module console1 Public Sub Main() ' On demande le nom System.Console.Write("Nom : ") ' lecture réponse Dim nom As String = System.Console.ReadLine() ' on demande l'âge Dim age As Integer Les bases de VB.NET 33 Dim ageOK As Boolean = False Do While Not ageOK ' question Console.Out.Write("âge : ") ' lecture-vérification réponse Try age = Int32.Parse(System.Console.ReadLine()) If age < 0 Then Throw New Exception ageOK = True Catch Console.Error.WriteLine("Age incorrect, recommencez...") End Try Loop ' affichage final Console.Out.WriteLine("Vous vous appelez [" & nom & "] et vous avez [" & age & "] ans") End Sub End Module Quelques résultats d'exécution : dos>console1 Nom : dupont âge : 23
Vous vous appelez dupont et vous avez 23 ans
dos>console1 Nom : dupont âge : xx Age incorrect, recommencez... âge : 12 Vous vous appelez dupont et vous avez 12 ans | |
|
^_^E-V-E-R-E-S-T^_^ (مشرف(ة
Messages : 1061 Date d'inscription : 22/08/2009
| Sujet: Re: La gestion des exceptions Sam 22 Aoû - 5:49 | |
| je comprens rien la dans mais je vois que c'est un travail exelent que ta fais bravo ........ | |
|
khwiwla (مشرف(ة
Messages : 445 Date d'inscription : 14/08/2009 Age : 33
| |
saraloudiyi (مشرف(ة
Messages : 875 Date d'inscription : 26/08/2009
| Sujet: Re: La gestion des exceptions Ven 28 Aoû - 18:03 | |
| | |
|
Contenu sponsorisé
| Sujet: Re: La gestion des exceptions | |
| |
|