Try-Catch-End Try en VBScript ne semble pas fonctionner
Je suis essayer le code suivant:
Try ' DOESN'T WORK
Throw 2 ' How do I throw an exception?
Catch ex
'What do I do here?
End Try
mais j'obtiens le message d'erreur Statement expected
dans la clause catch.
Personne ne sait comment je peux attraper/lancer des exceptions dans VBScript utilisation de try/catch? (Je suis pas à la recherche de solutions avec On Error Do X
.)
- Alors vous allez être très déçu. Il n'y a pas de Try-Catch de soutien dans pre-.NET les versions de VB, y compris 6 VB, VBA, VBScript et.
On Error Resume Next
n'est pas si mauvaise si vous savez comment l'utiliser correctement. - Ouais, je suis déçu. 🙁
On Error Resume Next
utilisé pour être mon préféré de commande de retour au collège, quand j'ai appris VB 6... il est rapidement devenu mon plus détesté de commande après que j'ai appris le C#. Je crois que je vais l'utiliser mais je ne veux vraiment pas. - Voir ci-dessous pour quelques conseils sur l'utilisation correctement! 🙂
Vous devez vous connecter pour publier un commentaire.
VBScript n'a pas de Try/Catch. (Référence du langage VBScript. Si elle avait Essayer, il serait inscrit dans les États de section.)
On Error Resume Next
est la seule erreur de manipulation dans VBScript. Désolé. Si vous voulez try/catch, JScript est une option. Il est pris en charge partout que VBScript est et a les mêmes capacités.Les Erreurs De Manipulation
D'une sorte de "vieux style" de la gestion des erreurs est disponible en VBScript, à ne faire usage de
On Error Resume Next
. Nous avons d'abord permettre que (souvent en haut d'un fichier, mais vous pouvez l'utiliser en place de la premièreErr.Clear
ci-dessous pour leur effet combiné), puis avant l'exécution de nos éventuellement des erreurs de la génération de code, effacer les erreurs qui ont déjà eu lieu, exécutez la peut-être des erreurs de la génération de code, et puis explicitement vérifier les erreurs:Ci-dessus, nous sommes juste l'impression de l'erreur s'il se produit. Si l'erreur a été fatale pour le script, vous pouvez remplacer la deuxième
Err.clear
avecWScript.Quit(Err.Number)
.Note également de la
On Error Goto 0
qui s'éteint de reprendre l'exécution à l'instruction suivante lorsqu'une erreur se produit.Si vous voulez tester le comportement pour quand le
Set
réussit, aller de l'avant et de commenter cette ligne, ou créer un objet qui va réussir, commevbscript.regexp
.La
On Error
directive n'affecte le fonctionnement actuel de la portée (actuelSub
ouFunction
) et n'affecte pas les appelant ou de l'appelé étendues.La Levée Des Erreurs
Si vous voulez vérifier une sorte d'etat et de lever une erreur à être traitées par le code qui appelle votre fonction, vous devez utiliser
Err.Raise
.Err.Raise
prend jusqu'à cinq arguments,Number
,Source
,Description
,HelpFile
, etHelpContext
. À l'aide de fichiers d'aide et des contextes est au-delà de la portée de ce texte.Number
est un numéro d'erreur que vous choisissez,Source
est le nom de votre application/classe/objet/propriété qui est la collecte de l'erreur, etDescription
est une courte description de l'erreur qui s'est produite.Vous pouvez ensuite gérer l'erreur levée comme discuté ci-dessus.
Journal des modifications
Ajout d'une
Err.Clear
avant la possible erreur causant ligne pour effacer toutes les erreurs précédentes qui ont été ignorés.Précisé.
Ajouter des commentaires dans le bloc de code. A précisé qu'il devait être plus de code entre
On Error Resume Next
etErr.Clear
. Correction de quelques de la grammaire à l'être moins maladroit. Ajout d'infos surErr.Raise
. La mise en forme.Err.Clear
est superflu, commeOn Error Resume Next
réinitialise leErr
objet pour vous. Aussi ne font aucune mention deErr.Raise
un outil très utile dans le VBScript Erreur de Manipulation de l'arsenal.Err.Clear
. J'ai ajouté des informations à propos deErr.Raise
.Try Catch existe via la solution de contournement dans VBScript:
http://web.archive.org/web/20140221063207/http://my.opera.com/Lee_Harvey/blog/2007/04/21/try-catch-finally-in-vbscript-sure
Parfois, en particulier lorsque vous travaillez avec VB, vous pouvez manquer de solutions évidentes. Comme je le faisais depuis 2 jours.
le code qui génère l'erreur doit être déplacé vers une fonction distincte. Et dans le début de la fonction que vous écrivez
On Error Resume Next
. C'est comment une erreur peut être "avalé", sans avaler toutes les autres erreurs. Diviser le code en petites fonctions distinctes améliore également la lisibilité, refactoring & rend plus facile d'ajouter de nouvelles fonctionnalités.On Error Goto 0
après le code qui génère l'erreur, de sorte que vous n'avez pas à supporter la charge d'un appel de fonction (et n'ont pas besoin de minuscules fonctions qui ne font aucun travail réel).