Programmation Visual Basic .NET/Gestion d'exception
Levées d'exception
modifierPour éviter que des erreurs bloquent l'exécution du programme il est possible de définir un comportement quand elles surviennent.
On Error GoTo
modifier
La méthode utilisée en VBA est toujours disponible. Celle-ci n'était pas structuré car fait appel à un Goto vers une étiquette :
Public Sub Main()
On Error GoTo Etiquette1
Dim Resultat As Integer = 2
Dim a = 1
Dim b = 0
Resultat = a / b ' Division par zéro
Etiquette1:
MessageBox.Show(Resultat) ' renvoie 2
End Sub
Pour éviter d'avoir à définir des étiquettes on peut tout simplement ignorer les erreurs un moment (puis les réactiver avec On Error GoTo 0
:
On Error Resume Next
Dim Resultat As Integer = 2
Dim a = 1
Dim b = 0
Resultat = a / b
On Error GoTo 0
MessageBox.Show(Resultat)
Try...Catch...Finally
modifier
Le gestionnaire d'erreur structuré s'appelle Try...Catch...Finally
[1]. De nombreux types d'erreur y sont disponible par héritage de la classe Exception
.
Public Sub Main()
Dim Resultat As Integer = 2
Dim a = 1
Dim b = 0
Try
Resultat = a / b
Catch ex As Exception
MsgBox(ex.ToString)
Finally
MessageBox.Show(Resultat)
End Try
End Sub
Remarque : pour relancer une exception dans un bloc Catch
, utiliser le mot clé Throw
sans argument. En effet il reset la propriété .StackTrace
de l'objet exception en cas d'argument[2].
Références
modifier- ↑ (anglais) http://msdn.microsoft.com/fr-fr/library/fk6t46tz%28v=vs.71%29.aspx
- ↑ (anglais) Blog d'Eric Lippert