web-dev-qa-db-fra.com

Que fait l'instruction "On Error Resume Next"?

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?

58
Carlos Blanco

En gros, il indique au programme que vous rencontrez une erreur, continuez à la ligne suivante.

78
David

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
39
Tmdean

En cas d'erreur, l'exécution continuera sur la ligne suivante sans interrompre le script.

24

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 
12
t0mm13b

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.)

3
Chandralal

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.
2
alfredo

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

0
Coolvideos73