Je suis venu à quelques exemples de VBScript, et j'ai vu la déclaration On Error Resume Next
essentiellement au début du script.
Qu'est ce que ça fait?
En gros, il indique au programme que vous rencontrez une erreur, continuez à la ligne suivante.
Il est à noter que même quand On Error Resume Next
est en vigueur, l'objet Err est toujours rempli lorsqu'une erreur se produit, vous pouvez donc toujours gérer les erreurs de style C.
On Error Resume Next
DangerousOperationThatCouldCauseErrors
If Err Then
WScript.StdErr.WriteLine "error " & Err.Number
WScript.Quit 1
End If
On Error GoTo 0
En cas d'erreur, l'exécution continuera sur la ligne suivante sans interrompre le script.
Cela signifie que lorsqu'une erreur survient sur la ligne, cela indique à vbscript de continuer l'exécution sans abandonner le script. Parfois, le On Error
Suit le libellé Goto
pour modifier le flux d'exécution, comme dans un bloc de code Sub
. Vous savez maintenant pourquoi et comment l'utilisation de GOTO
peut générer un code spaghetti:
Sub MySubRoutine () On Error Gand ErrorHandler REM VB code ... REM Plus VB Code ... Exit_MySubRoutine: REM Désactivez le gestionnaire d'erreurs! En cas d'erreur Goto 0 REM Laissez .... Quitter Sub ErrorHandler: REM Faites quelque chose à propos de l'erreur Goto Exit_MySubRoutine End Sub
On Error Instruction - Spécifie que lorsqu'une erreur d'exécution se produit, le contrôle passe à l'instruction qui suit immédiatement l'instruction. Comment jamais l'objet Err a été renseigné (Err.Number, Err.Count, etc.)
Cela permet de gérer les erreurs. Ce qui suit est en partie de https://msdn.Microsoft.com/en-us/library/5hsw66as.aspx
' Enable error handling. When a run-time error occurs, control goes to the statement
' immediately following the statement where the error occurred, and execution
' continues from that point.
On Error Resume Next
SomeCodeHere
If Err.Number = 0 Then
WScript.Echo "No Error in SomeCodeHere."
Else
WScript.Echo "Error in SomeCodeHere: " & Err.Number & ", " & Err.Source & ", " & Err.Description
' Clear the error or you'll see it again when you test Err.Number
Err.Clear
End If
SomeMoreCodeHere
If Err.Number <> 0 Then
WScript.Echo "Error in SomeMoreCodeHere:" & Err.Number & ", " & Err.Source & ", " & Err.Description
' Clear the error or you'll see it again when you test Err.Number
Err.Clear
End If
' Disables enabled error handler in the current procedure and resets it to Nothing.
On Error Goto 0
' There are also `On Error Goto -1`, which disables the enabled exception in the current
' procedure and resets it to Nothing, and `On Error Goto line`,
' which enables the error-handling routine that starts at the line specified in the
' required line argument. The line argument is any line label or line number. If a run-time
' error occurs, control branches to the specified line, making the error handler active.
' The specified line must be in the same procedure as the On Error statement,
' or a compile-time error will occur.
On Error Reprend Next signifie que On Error reprend à la ligne suivante.
par exemple. si vous essayez le bloc Try, cela arrêtera le script si une erreur survient