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

Windows Forms Discussion :

[Vb.Net] - Function - RETURN


Sujet :

Windows Forms

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2004
    Messages : 31
    Par défaut [Vb.Net] - Function - RETURN
    J'ai un "avertissement" dans VB 2005 qui se lit comme ceci :

    >La fonction "ChangerDateCaractere" ne retourne pas une valeur pour tous les chemins de code. Une exception de référence Null peut se produire au moment de l'exécution lorsque le résultat est utilisé>

    Voici cette fonction....

    Code VB.NET : 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
    18
    19
     Private Function ChangerCaractereDate(ByVal strCodeDivers As String) As String
          Dim strDateCarac As String = String.Empty
          Dim intCompteur As Integer = 0
          Try
             Do While intCompteur < 8
                Select Case strCodeDivers.Substring(intCompteur, 1)
                   Case "a"
                      strDateCarac = strDateCarac & "0"
                   Case "b"
                      strDateCarac = strDateCarac & "1"
                   Case "c"
                      strDateCarac = strDateCarac & "2"
                 End Select
                 intCompteur += 1
             Loop
             Return strDateCarac
          Catch objException As Exception
          End Try
       End Function

    Quel est le problème de RETURN ????? par rapport à l'avertissement ????

    Merci de vos réponses!

  2. #2
    AP
    AP est déconnecté
    Membre chevronné
    Avatar de AP
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    480
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2002
    Messages : 480
    Par défaut
    Pense aux balise code pour rentre ton message plus lisible.
    Ton problème est que si tu as une exception, tu n'auras pas de valeur de retournée.

  3. #3
    Membre Expert
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Par défaut
    Citation Envoyé par AP Voir le message
    Pense aux balise code pour rentre ton message plus lisible.
    Ton problème est que si tu as une exception, tu n'auras pas de valeur de retournée.
    +1, ajouter une clause finally pour retourner une valeur.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2004
    Messages : 31
    Par défaut [Vb.Net] - suite
    Ok! J'ai parfaitement bien compris mon erreur!

    Il faut que je place "Return" juste avant "End Function"

    Ça fonctionne très bien!

    Merci!

  5. #5
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 193
    Par défaut
    non ce n'est pas forcément la solution

    déjà si tu ne mets rien dans le catch ca ne sert à rien de mettre un try catch !
    en général dans un catch on met soit quelque chose qui enregistre les erreurs soit un message
    faire le return dans le finally c'est pas top, mettre un return dans le catch serait éventuellement mieux

    donc soit dans le catch tu fais un return d'une valeur "en cas de problème"
    soit tu retire le try catch pour que l'appelant sache qu'il y a eut un problème (à lui d'avoir un try catch et d'arreter son traitement si c'est critique)

    sinon d'une manière générale ce genre d'avertissement ne doit pas etre pris en compte, enfin quand on sait ce qu'on fait
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2004
    Messages : 31
    Par défaut [Vb.Net] - suite
    Dans le Try Catch, j'ai toujours un message d'erreur qui récupère mes erreurs et les mets dans un fichier texte.
    Mais pour l'explication de mon problème, j'ai raccourci mon code pour ne pas qu'il soit trop long!

    Je ne laisse jamais un Try catch vide, veuillez m'excusez!

    mais comment pouvoir mettre un "Return" un peu partout dans ma fonction avec un "Exit Function" ???
    Devrais-je plutôt utiliser "ChangerDateCaractere = strDateCarac" ????

    Merci de vos réponses!

  7. #7
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 193
    Par défaut
    la question à ce poser est ce légitime de répondre une valeur en cas d'erreur
    si ca a planté c'est que ca c'est pas passé comme prévu
    renvoyer une chaine à moitié remplie ne me semble pas ce qu'il y a de mieux


    sinon comme je disais

    donc soit dans le catch tu fais un return d'une valeur "en cas de problème"
    soit tu retire le try catch pour que l'appelant sache qu'il y a eut un problème (à lui d'avoir un try catch et d'arreter son traitement si c'est critique)

    sinon d'une manière générale ce genre d'avertissement ne doit pas etre pris en compte, enfin quand on sait ce qu'on fait
    soit tu fais throw ex dans le catch pour que l'erreur se reproduise après l'avoir loggé et l'appelant fait en fonction


    sinon "ChangerDateCaractere = strDateCarac & "0" " est valide
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2004
    Messages : 31
    Par défaut [Vb.Net] - suite
    Merci pour tous ces conseils!

  9. #9
    Membre Expert
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Par défaut
    Citation Envoyé par sperot51 Voir le message
    faire le return dans le finally c'est pas top, mettre un return dans le catch serait éventuellement mieux
    De toute façon, ce n'est pas possible de mettre un return dans un finally.

    Je viens de me rendre compte de ma bétise .

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2004
    Messages : 31
    Par défaut [Vb.Net] - suite
    mais comment pouvoir mettre un "Return" un peu partout dans ma fonction avec un "Exit Function" ???
    Devrais-je plutôt utiliser "ChangerDateCaractere = strDateCarac" ????

    Merci de vos réponses!

  11. #11
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 193
    Par défaut
    pourquoi mettre des return un peu partout ?
    c'est pas parce que visual studio te signales ce qui pourrait etre une erreur de programmation que c'en est une !!!
    c'est la 3eme fois que je le dis
    ta fonction est bien comme ca ormis le fait qu'en cas d'erreur c'est abérant de retourner quelque chose justement ! laisse l'erreur se propager si tu n'a pas de valeur par défaut à donner


    return "blabla"

    fait la meme chose que

    ChangerDateCaractere = "blabla"
    exit function
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 22/07/2013, 10h16
  2. [Système] function return echo
    Par marie4449 dans le forum Langage
    Réponses: 8
    Dernier message: 16/04/2007, 16h46
  3. function return invalid
    Par stela86 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/06/2006, 16h26
  4. [VB]Erreur: Function must return variant
    Par Empty_body dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 16/02/2006, 12h23
  5. Réponses: 5
    Dernier message: 24/05/2005, 10h09

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