Errori run-time e trapping degli errori
Se un file viene aperto For Input e non esiste, il VB produce un errore di esecuzione (Errore di run-time 53: impossibile trovare il file") e l'esecuzione del programma viene immediatamente interrotta.
In generale il VB assegna un codice numerico a tutte quelle condizioni di errore che determinano l'interruzione prematura dell'esecuzione di un programma. I principali errori relativi ai file sono:
- 53: File non trovato
- 61: Spazio su disco esaurito
- 64: Nome di file non valido
- 67: Troppi file aperti contemporaneamente
Naturalmente esistono anche condizioni di errore non associate ai file, come ad esempio:
- 6 : Divisione per zero
E' possibile evitare l'interruzione del programma in presenza di un errore run-time per mezzo dell'istruzione On Error. Questa istruzione attiva il trapping degli errori a partire dall'esecuzione dell'istruzione fino alla fine della subroutine o funzione corrente (il trapping può essere disabilitato anche con l'istruzione "On Error GoTo 0"). Di solito On Error viene usata insieme all'istruzione GoTo. Per esempio il seguente pezzo di programma visualizza una message box nel caso in cui il tentativo di apertura del file fallisca:
On Error GoTo errore_file
Open "dati.txt" For Input As #1
errore_file:
MsgBox "Il file non esiste!"
Exit Sub
Un'altra possibilità consiste nell'ignorare gli errori con l'istruzione:
On Error Resume Next
che, in caso di errore, riprende l'esecuzione dall'istruzione immediatamente successiva. Per esempio la funzione seguente controlla se un file esiste, tentando di aprirlo in lettura e gestendo quindi l'eventuale condizione di errore:
Function File_Esiste(nome As String) As Boolean
Dim num As Integer
num = FreeFile()
On Error Resume Next
Open nome For Input As #num
If Err.Number = 53 Then
File_Esiste = False
Else
File_Esiste = True
Close #num
End If
End Function
Si osservi la variabile di sistema Err.Number che contiene il codice dell'ultimo errore run-time che si è verificato.
Sito realizzato in base al template offerto da
http://www.graphixmania.it