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

Dotnet Discussion :

Gestion des exceptions


Sujet :

Dotnet

  1. #1
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2019
    Messages : 11
    Par défaut Gestion des exceptions
    Bonjour,

    j ai un debat avec des collègues sur la gestion des exceptions. Imaginons la fonction suivante. (une fonction simple qui convertit une chaine de caractère en entier)


    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
     
    Public Function StringToInteger(ByVal Value As String, Optional ByVal DefaultValue As Integer = 0) As Integer
     
            Dim mResult As Integer
     
            Try
                'Convert the value 
                mResult = CInt(Value)
     
                'Return converted value 
                Return mResult
            Catch mException As Exception
                'As error occurred, return the default value
                Return DefaultValue
            End Try
     
        End Function
    Dans ce cas, si la valeur de Value est vide, alors je vais avoir une exception de levée et la valeur retournée sera DefaulValue.

    Ne vaut il pas alors rajouter un test sur la valeur de Value avant d'effectuer la conversion?


    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
     
    Public Function StringToInteger(ByVal Value As String, Optional ByVal DefaultValue As Integer = 0) As Integer
     
            Dim mResult As Integer
     
            Try
                'Check if value was specified
                If Value = String.Empty Then Return DefaultValue
     
                'Convert the value 
                mResult = CInt(Value)
     
                'Return converted value 
                Return mResult
            Catch mException As Exception
                'As error occurred, return the default value
                Return DefaultValue
            End Try
     
        End Function
    Quelle est la meilleurs méthode au niveau performance? Le If coute t il plus de ressource que la génération de l'exception?

    Merci Billy21

  2. #2
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Hello

    Le If coûte bien moins cher à mon avis

  3. #3
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Par défaut
    Bonjour,

    Sans être un grand expert, je suis quasis sur que la génération d'une exception est bien moins performante que le if.
    Il faudra un expert pour te donner le vrai pourquoi, mais il y a des histoires de piles, interruption du fil d'exécution ... etc etc.
    De plus pour la compréhension du code je trouve le if bien plus claire.

    J@ckHerror.

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 203
    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 203
    Par défaut
    oui la génération d'une exception est très couteuse (récupération de la pile des appels et d'autres choses)
    enfin elle est très couteuse par rapport à un if
    mais sur l'exécution d'un programme ce n'est pas perceptible, ca reste en dessous ou de l'ordre de la milliseconde (le if doit être entre les pico et nano secondes)
    là où ca peut le devenir c'est dans une boucle par exemple ou tous les string dans ton cas son null tu vas lever beaucoup d'exception

    donc quand on peut faire autrement qu'en levant une exception on fait autrement sans se poser de question
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2019
    Messages : 11
    Par défaut
    Merci pour vos réponses. Effectivement, je suis un peu de votre avis mais je voulais confirmation.

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

Discussions similaires

  1. [ADOConnect] gestion des exception en tout temps
    Par portu dans le forum Bases de données
    Réponses: 1
    Dernier message: 20/04/2005, 19h01
  2. [ORACLE 9i] Gestion des exceptions
    Par sygale dans le forum SQL
    Réponses: 6
    Dernier message: 19/08/2004, 15h06
  3. Gestion des exception (EOleException)
    Par shurized dans le forum Bases de données
    Réponses: 5
    Dernier message: 30/06/2004, 17h25
  4. [XMLRAD] gestion des exceptions
    Par pram dans le forum XMLRAD
    Réponses: 2
    Dernier message: 28/01/2003, 17h48
  5. c: gestion des exceptions
    Par vince_lille dans le forum C
    Réponses: 7
    Dernier message: 05/06/2002, 14h11

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