Comment intercepter les erreurs ADSI
VBScript n’offre qu’un seul moyen d’intercepter les erreurs : gestion des erreurs inline. Un gestionnaire d’erreurs inline commence par l’instruction On Error Resume Next . Étant donné que Lors de la reprise d’erreur Suivant empêche toute erreur d’arrêter l’exécution du script jusqu’à la fin de l’étendue à partir de laquelle On Error Resume Next est appelé, vous devez case activée la valeur err à chaque point après l’instruction On Error Resume Next où vous prévoyez qu’une erreur peut se produire. L’exemple suivant illustre la gestion des erreurs inline dans un script ADSI :
On Error Resume Next
Set myComputer = GetObject(computerPath)
If Err Then AdsiErr()
' Create the new user account
Set newUser = myComputer.Create("user", username)
newUser.SetInfo
If Err Then AdsiErr()
Sub AdsiErr()
Dim s
Dim e
If Err.Number = &H8000500E Then
WScript.Echo "The user " & username & " already exists."
Elseif Err.Number = &H80005000 Then
WScript.Echo "Computer " & computerPath & " not found. Check the ADsPath and try again."
Else
e = Hex(Err.Number)
WScript.Echo "Unexpected Error " & e & "(" & Err.Number & ")"
End If
WScript.Quit(1)
End Sub
Après chaque emplacement où le script est susceptible de rencontrer une erreur, il existe une instruction If Err . L’objet Err contient le code d’erreur de la dernière erreur qui s’est produite pendant l’exécution du script ; si aucune erreur ne s’est produite, Err sera toujours égal à zéro (0). Dans l’exemple précédent, une erreur entraîne le saut de l’exécution vers la sous-routine AdsiErr , qui vérifie la valeur de Err.Number pour les erreurs attendues. Au lieu de mourir avec un message d’erreur cryptique, le script donnera une explication un peu meilleure de la raison pour laquelle il a cessé de s’exécuter.
N’oubliez pas que dans l’étendue dans laquelle On Error Resume Next est appelé, toute erreur qui se produit après l’appel On Error Resume Next est ignorée. Cela peut rendre un script plus difficile à déboguer si vous oubliez de case activée la valeur Err aux emplacements appropriés. Partout où vous vous attendez à ce qu’une erreur soit probable, veillez à case activée la valeur Err.
(Lorsque vous déboguez initialement le script, vous pouvez simplement laisser le script arrêter son exécution et afficher le numéro de ligne incriminé sur une erreur, puis ajouter les gestionnaires d’erreurs une fois que le flux de programme de base est correct.)