Foutenafhandeling
- Er kunnen zich onverwachte omstandigheden voordoen, zoals een gebruiker die een bestand
probeert te openen dat niet bestaat of iets op te slaan op een schijf die schrijfbeveiligd
is. In normale omstandigheden crasht je programma.
- Belangrijke opmerking: foutenafhandeling kan niets doen aan de fouten die jij als
programmeur maakt. In het beste geval kan je iets doen aan onhandigheden van de gebruiker.
- Hoe kan je fouten opvangen? In een procedure (elke procedure apart) neem je op als
éérste regel:
On Error ...
En wat het programma kan doen is één van de volgende:
GoTo 0: niets
GoTo (label): ga naar een label. Zo'n label is een tekst zonder spaties met een
dubbelpunt. Plaats dat na een Exit Sub, omdat de foutenafhandeling niet mag gebeuren in
gewone omstandigheden.
Resume: doe opnieuw de regel waar de fout in gebeurde
Resume Next: ga verder met de volgende regel
Resume 0: niets
Daarvoor kan je gebruik maken van het Err object (met de Number en Description
eigenschappen), en de gebruiker vragen wat hij wil doen: annuleren, opnieuw proberen, of
negeren.
- Bijvoorbeeld een procedure opslaan:
Sub Save
On error GoTo errsave
...
Exit Sub
errsave:
Select Case MsgBox("Fout. " & Err.Description, vbAbortRetryIgnore)
Case vbAbort
Resume 0
Case vbRetry
Resume
Case vbIgnore
Resume Next
End Select
End Sub
Als er iets gebeurt krijgt de gebruiker de keuze tussen annuleren (niets doen),
opnieuw proberen (Resume) of negeren (Resume Next)
- Een volledig voorbeeld: Notepad
[VB Web] - [hlrnet] - [copyright]