IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Gestion des erreurs


Sujet :

VBScript

  1. #1
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 338
    Points : 4 295
    Points
    4 295
    Par défaut Gestion des erreurs
    Bonjour,


    En espérant écrire au bon endroit, je me met petit à petit au VBS, sachant que finalement,c 'est un peu similaire au VBA, mais en plus puissant

    Bref, j'ai récupéré un script VBS, et je vous avoue qu'il y a des choses que j'ai du mal à comprendre. Grossièrement, ce code permet de déplacer des mails dans des dossiers spécifiques.

    Voici un extrait de ce code qui me pose "problème "(même si question serait plutôt le terme approprié) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    	
    on error resume next
    	frommail = olmyitem.senderName
    	frommail2 = olmyitem.SenderEmailAddress
    	objmail = olmyitem.subject
    	corpmail = olmyitem.body
    	datemail = olmyitem.ReceivedTime
    	mail = objmail & vbCrLf & corpmail
    	tomail = olmyitem.to
    	ccmail = olmyitem.cc
    	EntryID = olmyitem.EntryID
    	'Gestion d'erreur si on n'arrive pas a definir les variables demandé
    	If Err.Number <> 0 Then 
    		olmyitem.move olfoldererreur
    		instructions d'insertion SQL
    		Err.clear
    	End If
    Comme vous le voyez dans ce morceau de code (inclus dans une boucle For, mais je pense pas que ça ait une espèce d'importante), on a un "On error Resume next", qui permet d'ignorer l'erreur si jamais il en apparait une.
    Cependant, comme vous pouvez le constater, j'ai un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Err.Number <> 0 Then
    Qui normalement permet de faire la gestion des erreurs. Là je comprend plus vu qu'on a ignoré l'erreur, normalement, pour ce que j'ai compris, il ne devrait jamais rentrer dans cette condition. Pourtant, il rentre quand même (car le mail est bien déplacé dans mon dossier défini sous olfoldererreur ) et j'arrive pas à comprendre pourquoi.
    Cela voudrait-il dire que s'il rencontre une erreur, il l'ignore mais "stocke" le numéro de l'erreur quelquepart ?

    Par ailleurs, dans le reste du code, je n'ai, à aucun moment, une réinitialisation des erreurs (un On Error go To 0), du coup je comprend pas Quelqu'un pourrait-il m'éclairer ?



    Tant que j'y suis, par rapport à ce code, j'ai rajouté, au début de celui-ci, une gestion d'erreur sur une connexion comme ceci (en copiant un peu l'existant finalement) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    On Error Resume Next
    strConnectString = "DRIVER=NomDriver;Server=NomServeur;UID=Id;Password=password;Database=Nombase;Option=3"
    rs.ActiveConnection = strConnectString
    if err.number <> 0 then
    	msgbox "Connexion à la base echouée"
    	Wscript.quit
    else
    	'traitement initial
    end if
    On error goto 0
    => Je ne sais pas si mon On Error Resume Next est très judicieux
    => Ai-je vraiment écrit correctement mon code ?
    => J'ai mis un On error goto 0 qui permet de revenir à une gestion d'erreur par défaut : est-ce bien cela ?


    En espérant n'avoir rien oublié, je vous remercie par avance pour vos lumières
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  2. #2
    Membre éprouvé
    Inscrit en
    Juin 2006
    Messages
    795
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 795
    Points : 1 270
    Points
    1 270
    Par défaut
    Salut illight,

    Citation Envoyé par illight Voir le message
    (...)
    Tant que j'y suis, par rapport à ce code, j'ai rajouté, au début de celui-ci, une gestion d'erreur sur une connexion comme ceci (en copiant un peu l'existant finalement) :

    => Je ne sais pas si mon On Error Resume Next est très judicieux
    => Ai-je vraiment écrit correctement mon code ?
    => J'ai mis un On error goto 0 qui permet de revenir à une gestion d'erreur par défaut : est-ce bien cela ?
    => Ton "On error resume next" est judicieux.
    => Ton code est correct.
    => Là, tout dépends de ce qui suit ce morceau de code. En tout cas, cela permet effectivement de revenir à une gestion d'erreur par défaut, c'est à dire aucune gestion d'erreur (ça pète à la moindre erreur).


    Citation Envoyé par illight Voir le message
    Comme vous le voyez dans ce morceau de code (inclus dans une boucle For, mais je pense pas que ça ait une espèce d'importante), on a un "On error Resume next", qui permet d'ignorer l'erreur si jamais il en apparait une.
    Cependant, comme vous pouvez le constater, j'ai un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Err.Number <> 0 Then
    Qui normalement permet de faire la gestion des erreurs. Là je comprend plus vu qu'on a ignoré l'erreur, normalement, pour ce que j'ai compris, il ne devrait jamais rentrer dans cette condition.
    (...)
    Le "On error Resume next" permet effectivement d'ignorer les erreurs, dans la mesure où le code continue d'être executé dans l'ordre en ignorant les éventuelles erreurs qui peuvent survenir.
    Mais le fait de continuer l'exécution du code après une erreur ne signifie pas pour autant que l'erreur en question n'a pas été capturée.
    En effet, si une erreur devait survenir, alors l'objet Err contient les informations de cette erreur.

    Citation Envoyé par illight Voir le message
    Pourtant, il rentre quand même (car le mail est bien déplacé dans mon dossier défini sous olfoldererreur ) et j'arrive pas à comprendre pourquoi.
    Cela voudrait-il dire que s'il rencontre une erreur, il l'ignore mais "stocke" le numéro de l'erreur quelquepart ?
    C'est exactement ça !
    L'erreur est stockée dans l'objet Err, grâce auquel on peut, entre autres, avoir le code d'erreur ainsi que la description de l'erreur.

    Citation Envoyé par illight Voir le message
    Par ailleurs, dans le reste du code, je n'ai, à aucun moment, une réinitialisation des erreurs (un On Error go To 0), du coup je comprend pas Quelqu'un pourrait-il m'éclairer ?
    Si, il y a une réinitialisation des erreurs ! Dans ton code, il y a un Err.clear (dernière instruction de ton If Err.Number <> 0 Then) qui permet de réinitialiser l'objet Err.

  3. #3
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 338
    Points : 4 295
    Points
    4 295
    Par défaut
    Je te remercie pour tes explications (avec un peu de retard)

    j'y vois beaucoup plus clair maintenant
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [FB] Gestion des erreurs et application francophone
    Par Benjamin GAGNEUX dans le forum Installation
    Réponses: 10
    Dernier message: 20/05/2006, 14h54
  2. [struts][Datasource]Gestion des erreurs
    Par GreenJay dans le forum Struts 1
    Réponses: 8
    Dernier message: 15/09/2004, 16h51
  3. [VB6] Gestion des erreurs dans une dll
    Par zimba-tm dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 02/08/2004, 11h20
  4. [XSLT]Est ce qu'il y'a la gestion des erreur en xslt ?
    Par miloud dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 04/02/2004, 17h19
  5. [LG]gestion des erreurs
    Par frontin dans le forum Langage
    Réponses: 3
    Dernier message: 29/11/2003, 22h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo