d
Abilita o disabilita la gestione degli errori.
Sintassi
On Error Resume Next
On Error GoTo 0
Note
Se non si utilizza un'istruzione On Error Resume Next in qualsiasi punto del codice, qualsiasi errore di runtime che si verifica può causare la visualizzazione di un messaggio di errore e l'interruzione dell'esecuzione del codice. Tuttavia, l'host che esegue il codice determina il funzionamento esatto. L'host a volte può scegliere di gestire tali errori in modo diverso. In alcuni casi, il debugger di script può essere richiamato in corrispondenza del punto in cui si è verificato l'errore. Negli altri casi, potrebbero non esservi indicazioni evidenti dell'errore perché l'host non desidera avvisare l'utente. Anche in questo caso, ciò è funzionale al modo in cui l'host gestisce gli errori.
All'interno di qualsiasi routine, un errore non è necessariamente irreversibile se la gestione degli errori è abilitata in un punto qualsiasi dello stack di chiamate. Se la gestione locale degli errori non è abilitata in una routine e si verifica un errore, il controllo viene restituito mediante lo stack di chiamate finché non viene trovata una routine con la gestione degli errori abilitata e l'errore viene gestito in quel punto. Se nello stack di chiamate non viene rilevata alcuna routine con la gestione degli errori abilitata, viene visualizzato un messaggio di errore in tale punto e l'esecuzione si interrompe oppure l'host gestisce l'errore in base alle esigenze.
L'istruzione On Error Resume Next fa sì che l'esecuzioni continui con l'istruzione immediatamente successiva all'istruzione che ha causato l'errore di runtime o con l'istruzione immediatamente successiva alla chiamata più recente della routine contenente l'istruzione On Error Resume Next. Ciò consente il proseguimento dell'esecuzione nonostante un errore di runtime. È quindi possibile creare la routine di gestione degli errori in linea all'interno della routine.
Un'istruzione On Error Resume Next diventa inattiva quando viene chiamata un'altra routine. Sarà quindi necessario eseguire un'istruzione On Error Resume Next in ogni routine chiamata se si desidera gestire gli errori in linea all'interno di tale routine. All'uscita da una routine, la capacità di gestione degli errori restituisce il controllo alla gestione degli errori attiva prima dell'ingresso nella routine da cui è appena stata effettuata l'uscita.
Utilizzare On Error GoTo 0 per disabilitare la gestione degli errori se in precedenza è stata abilitata utilizzando On Error Resume Next.
Nell'esempio seguente viene illustrato l'uso dell'istruzione On Error Resume Next.
On Error Resume Next ' Ignore errors and continue execution
' Attempt to divide by zero (this will cause an error)
Dim result
result = 10 / 0
err1 = Err.Number
' Check if an error occurred
If err1 <> 0 Then
Err.Clear ' Clear the error
End If
' Script continues after error handling.
Spiegazione
Il risultato della riga = 10/0 causerà un errore di divisione per zero.
Poiché l'istruzione On Error Resume Next è attiva, lo script non viene arrestato e viene verificato l'errore utilizzando Err.Number.
L'errore viene quindi cancellato utilizzando Err.Clear dopo la gestione.
Aspetti importanti da ricordare
Err.Number: questa proprietà contiene il codice di errore se si verifica un errore. Se non si verifica alcun errore, è 0.
Err.Description: fornisce una descrizione dell'ultimo errore verificatosi.
Err.Clear: cancella le informazioni sull'errore dopo aver gestito l'errore, in modo tale che gli errori successivi non abbiano ripercussioni sullo script.
Esempio 1
On Error Resume Next ' Ignore errors and continue execution ' Attempt to divide by zero (this will cause an error) Dim result result = 10 / 0 err1 = Err.Number On Error GoTo 0 ' Default error handling is restored ' Now, any error that occurs will stop the script result = 10 / 0 'Error will be thrown