Visual Basic for Applications:
Gestione degli errori
Come fare:
In VBA, la gestione degli errori è tipicamente implementata usando l’istruzione On Error
che istruisce VBA su come procedere quando si verifica un errore. Le strategie di gestione degli errori più comuni coinvolgono l’On Error GoTo
etichetta, On Error Resume Next
e On Error GoTo 0
.
Esempio 1: Utilizzo di On Error GoTo
Questo approccio consente di indirizzare il programma a una specifica sezione di codice, etichettata immediatamente dopo l’incontro con un errore.
Sub ErrorHandlerExample()
On Error GoTo ErrHandler
Dim intDivision As Integer
intDivision = 5 / 0 ' Questo causerà un errore di divisione per zero
Exit Sub
ErrHandler:
MsgBox "Si è verificato un errore: " & Err.Description, vbCritical, "Errore!"
Resume Next
End Sub
In questo esempio, qualsiasi errore di runtime attiverà il salto a ErrHandler
, visualizzando un messaggio di errore e poi proseguendo con la linea successiva dopo l’errore.
Esempio 2: Utilizzo di On Error Resume Next
Questa strategia istruisce VBA a continuare l’esecuzione della riga di codice successiva anche se si verifica un errore, il che può essere utile per errori ritenuti innocui o quando si prevede di gestire l’errore più avanti nell’esecuzione.
Sub ResumeNextExample()
On Error Resume Next
Dim intDivision As Integer
intDivision = 5 / 0 ' Questo non fermerà il programma; l'errore è ignorato
' Verifica se si è verificato un errore
If Err.Number <> 0 Then
MsgBox "Si è verificato un errore: " & Err.Description, vbExclamation, "Errore Gestito"
' Reimposta l'errore
Err.Clear
End If
End Sub
In questo caso, il programma non si interrompe sull’errore; verifica se si è verificato un errore, lo gestisce se è così, e poi cancella l’errore.
Approfondimento
Storicamente, la gestione degli errori nei linguaggi di programmazione è evoluta da semplici istruzioni goto a meccanismi più sofisticati come le eccezioni in linguaggi come Java e C#. La gestione degli errori in VBA, pur non essendo potente o flessibile come la moderna gestione delle eccezioni, serve al suo scopo nel contesto dell’applicazione del linguaggio nell’automazione dei compiti negli ambienti di Microsoft Office.
La limitazione principale della gestione degli errori in VBA risiede nel suo approccio alquanto ingombrante e manuale, richiedendo un’attenta collocazione del codice di gestione degli errori e una chiara comprensione del flusso di esecuzione. I linguaggi di programmazione moderni offrono tipicamente soluzioni più eleganti, come i blocchi try-catch, che gestiscono automaticamente il flusso al codice di gestione degli errori senza la necessità di controlli manuali o salti nell’esecuzione del codice.
Nonostante queste limitazioni, i meccanismi di gestione degli errori di VBA sono adatti per la maggior parte dei compiti di automazione e, se usati correttamente, possono ridurre significativamente la probabilità che errori non gestiti causino problemi agli utenti. Inoltre, comprendere la gestione degli errori di VBA può fornire spunti sui vecchi paradigmi di programmazione e sull’evoluzione delle strategie di gestione degli errori nello sviluppo del software.