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 :

gérer une exception


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2007
    Messages : 758
    Par défaut gérer une exception
    Bonjour,

    je reçois des données dans une textbox que j'affecte à des variables, j'ai mis tous ça dans un try/catch car il arrive parfois que certaines donnés ne soit pas présente, voici un exemple de donnée reçu :

    Commune : PARIS
    Adresse : 28 rue des fleurs
    Nature : remplacement du carrelage
    Coordonnees : 06xxxxxxxx

    voici mon code qui récupéré les donnée situé derrière les libellés :

    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
    18
    19
    20
    21
    22
    23
    24
    Try
                        'commune 
                        Dim debut_ville As Integer = TextBox1.Text.IndexOf("Commune : ") + 10
                        Dim fin_ville As Integer = TextBox1.Text.IndexOf(ControlChars.NewLine, debut_ville)
                        Dim longeur_ville As Integer = fin_ville - debut_ville
                        ville_s = TextBox1.Text.Substring(debut_ville, longeur_ville)
                        'adresse
                        Dim debut_adresse As Integer = TextBox1.Text.IndexOf("Adresse : ") + 10
                        Dim fin_adresse As Integer = TextBox1.Text.IndexOf(ControlChars.NewLine, debut_adresse)
                        Dim longeur_adresse As Integer = fin_adresse - debut_adresse
                        adresse_s = TextBox1.Text.Substring(debut_adresse, longeur_adresse)
                        'nature
                        Dim debut_nature As Integer = TextBox1.Text.IndexOf("Nature : ") + 9
                        Dim fin_nature As Integer = TextBox1.Text.IndexOf(ControlChars.NewLine, debut_nature)
                        Dim longeur_nature As Integer = fin_nature - debut_nature
                        motif_depart = TextBox1.Text.Substring(debut_nature, longeur_nature)
                        'coordonnée 
                        Dim debut_coog As Integer = TextBox1.Text.IndexOf("Coordonnees :     ") + 18
                        Dim fin_coog As Integer = TextBox1.Text.IndexOf(ControlChars.NewLine, debut_coog)
                        Dim longeur_coog As Integer = fin_coog - debut_coog
                        coo_lambert = TextBox1.Text.Substring(debut_coog, longeur_coog)
                    Catch ex As Exception
     
                    End Try
    alors je ne sais pas comment faire pour gérer les exception au cas ou un voir plusieurs libelle soit absent !
    merci

  2. #2
    Membre Expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Par défaut
    Avant de faire les substrings, regarde si debut_ et fin_ sont corrects, cad si il y a bien des données présentes. Si début ou fin = -1, c'est qu'il n'y a pas de données.

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2007
    Messages : 758
    Par défaut
    Ok donc sans try/catch je Pourrais faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
                        Dim debut_ville As Integer = TextBox1.Text.IndexOf("Commune : ") + 10
                        Dim fin_ville As Integer = TextBox1.Text.IndexOf(ControlChars.NewLine, debut_ville)
                        Dim longeur_ville As Integer = fin_ville - debut_ville
    If début_ville = -1 then 
    Ville_s = "inconnue"
    Else 
                        ville_s = TextBox1.Text.Substring(debut_ville, longeur_ville)
    End if
    Dans ce cas le try/catch ne me sert a rien ?

  4. #4
    Membre chevronné
    Homme Profil pro
    Caféinomane
    Inscrit en
    Septembre 2011
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Caféinomane

    Informations forums :
    Inscription : Septembre 2011
    Messages : 202
    Par défaut
    Bonjour,

    Non dans ce 2e cas le try-catch n'a plus d'utilité.

    Attention au détail suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                        Dim debut_ville As Integer = TextBox1.Text.IndexOf("Commune : ") + 10
    (...)
                        If debut_ville = -1 then 
    (...)
    debut_ville n'aura jamais la valeur -1, puisqu'on lui ajoute systématiquement 10 !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
                        Dim debut_ville As Integer = TextBox1.Text.IndexOf("Commune : ")
     
                        If debut_ville = -1 then 
                            Ville_s = "inconnue"
                        Else 
                            debut_ville = debut_ville + 10
                            Dim fin_ville As Integer = TextBox1.Text.IndexOf(ControlChars.NewLine, debut_ville)   
                            If fin_ville = -1 then 
                                Ville_s = "inconnue"
                            Else 
                                Dim longeur_ville As Integer = fin_ville - debut_ville
                                ville_s = TextBox1.Text.Substring(debut_ville, longeur_ville)
                            End If
                        End if
    EDIT: par ailleurs, le traitement étant répétitif, vous aurez certainement intérêt à utiliser une fonction, dans le genre :

    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
    18
    19
        Private Function ExtraireValeur(ByVal source As String, ByVal tag As String) As String
            Dim debut, fin, longueur As Integer
            Dim inconnu As String = "inconnue"
            Dim retour As String
     
            retour = inconnu
     
            debut = source.IndexOf(tag)
            If debut <> -1 Then
                debut = debut + tag.Length
                fin = source.IndexOf(ControlChars.NewLine, debut)
                If fin <> -1 Then
                    longueur = fin - debut
                    retour = source.Substring(debut, longueur)
                End If
            End If
     
            Return retour
        End Function
    Le traitement devient alors simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ville_s = ExtraireValeur(TextBox1.Text, "Commune : ")
    adresse_s = ExtraireValeur(TextBox1.Text, "Adresse : ")
    (etc...)

Discussions similaires

  1. Comment gérer une exception ?
    Par Hydro999 dans le forum R
    Réponses: 2
    Dernier message: 08/09/2010, 16h43
  2. gérer une exception envoyée par un handler de thread
    Par floopi51 dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 01/04/2010, 15h06
  3. gérer une exception
    Par optixpro dans le forum C++Builder
    Réponses: 3
    Dernier message: 14/05/2009, 14h21
  4. Gérer une Exception
    Par MASSAKA dans le forum Langage
    Réponses: 6
    Dernier message: 10/12/2007, 10h25
  5. Ne pas gérer une exception
    Par flames dans le forum Langage
    Réponses: 1
    Dernier message: 06/05/2007, 16h48

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