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

VB.NET Discussion :

[VB6>VB.NET] Try Catch, On Error GoTo ..


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 64
    Par défaut [VB6>VB.NET] Try Catch, On Error GoTo ..
    Bonjour,

    j'ai une instruction de la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If champs(0) Is Nothing
       GoTo suivant
    End If
    Plus loin j'ai :
    Je ne vois pas comment gérer ces exception. Car le compilateur me dit que 'suivant' n'est pas valide car il se trouve à l'intérieur d'une instruction 'For' ou 'For Each' qui ne contient pas cette instruction.

    Si j'essaye de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Try
        champs(0)
    Catch champs(0) Is Nothing As Exception
        //mettre le contenu de suivant
    End Try
    Ca me fait des erreurs et en plus j'ai près de 70 erreurs qui s'ajoutent :
    " Une méthode ne peut pas contenir à la fois une instruction 'Try' et une instruction 'On Error' ou 'Resume' "

    Et un autre point comment évaluer On Error GoTo ?
    Parce que faire
    ca ne marche pas des masses...

    Merci d'avance car je suis vraiment perdu...

  2. #2
    Membre à l'essai
    Inscrit en
    Février 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 5
    Par défaut
    On Error Resume Next : Si une erreur survient ton programme continue avec les risques variables selon la nature de l'erreur dans ton programme

    On Error Goto Erreur_de_mon_sub: permet de te renvoyer dans une procédure (au sein de ton sub) suite à une erreur , exmple:
    Sub Mon_sub
    On Error Goto Erreur_de_mon_sub

    'Ton code

    Erreur_de_mon_sub:
    Msgbox "Attention erreur dans le traitement: " & err.Number & ChrW(10) _
    & CrhW(13) & err.Description
    End Sub


    Sinon tu as:

    Try
    'ton code
    'si anomalie alors on passe à la partie Catch
    Catch ex As Exception
    Msgbox "ex.Message"
    Finally
    'Important il te permets par exemple de mettre des valeurs par defauts
    'suite à des erreurs dans le try ou simplement à fermer des objets
    End Try


    Pour plus de détails, tu as par exemple: http://plasserre.developpez.com/v4-3.htm

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 299
    Par défaut
    Bonjour,
    Toi, tu as fait du VB6, non ?

    Le "on error goto <un bloc de code>" se traduit effectivement par un try catch dans lequel la partie catch contient ce qu'il y avait dans ton code <un bloc de code>.

    Il n'y a pas besoin de mettre le "on error" car dans un "try/catch/End try", on va dans le catch justement dès qu'il y a une erreur.

  4. #4
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 64
    Par défaut
    Ok j'y vois plus clair concernant Try ... Catch.

    Cependant, ce message d'erreur :
    " Une méthode ne peut pas contenir à la fois une instruction 'Try' et une instruction 'On Error' ou 'Resume' "
    Si j'ai bien compris je dois reprendre tous les "On Error" de mon code et les adaptés sur un Try ... Catch ?

    Une autre petite question,
    ordonnancement de mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    For
    //du code
     
    Try ..
    Catch ...
    //le code de suivant que j'ai recopié
    End Try
     
    //la sutie du code For
    End For
     
    suivant:
    //blabla
    Comment je peux dire à la fin du Try de revenir à la suite du code For ?
    Ou je ne m'y prend pas de la bonne manière ?

    Merci

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 5
    Par défaut
    Exit Try

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 299
    Par défaut
    Ca n'est pas la meilleur idée de remplacer tous les on error par un try catch si tu as beaucoup d'instruction de ce type.
    En fait, tout dépend du nombre différent de bloc concerné par l'ensemble des goto.

    Si ce nombre est égal à 1 (c'est à dire qu'il n'y a qu'un seul bloc de code pour gérer l'ensemble des erreurs, ex. "suivant" dans ton exemple initial), tu fais un seul try/catch de haut niveau dans ta méthode (qui va donc englober l'ensemble du code de ta méthode).

    Si tu as plusieurs blocs de code différents pour gérer les erreurs, il faut étudier si ces blocs ne sont pas associés à des types d'exception (exemple IO, memory...) auquel cas il te faut regarder dans les tutos les types d'exception (les 3 petits points après le mot clé Catch).

    Si c'est plus complexe que ça, tu peux rerouter sur des méthodes dans le bloc du catch selon la typologie d'erreur.

  7. #7
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 64
    Par défaut
    Merci a tous pour votre aide, et merci nikoko34, tu as mis le doigt en plein dans le mille

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

Discussions similaires

  1. A ceux qui ont migré de VB6 vers VB.Net
    Par Fox dans le forum VB 6 et antérieur
    Réponses: 81
    Dernier message: 21/05/2008, 14h56
  2. Réponses: 3
    Dernier message: 13/12/2006, 16h01
  3. [debutant sous eclipse] surround with try catch
    Par Alwin dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 26/06/2004, 20h03
  4. [try-catch] relancer les instruction du bloc try
    Par nounou dans le forum Langage
    Réponses: 11
    Dernier message: 12/05/2004, 11h23
  5. Exception & Try..catch
    Par PurL dans le forum C++Builder
    Réponses: 2
    Dernier message: 11/12/2002, 15h35

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