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

C# Discussion :

Probleme de finally qui ne s'affiche pas avec une exception [Débutant]


Sujet :

C#

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 71
    Points : 50
    Points
    50
    Par défaut Probleme de finally qui ne s'affiche pas avec une exception
    Bonjour,
    J'ai une classe Utilisateur qui doit afficher le nom le prénom et l'age d'un utilisateur
    Si l'age est supérieur à 109 ans la méthode get set doit générer une exception
    Le probleme suite a l'exception le finally ne s’exécute jamais et le programme plante n’exécutant jamais le contenu du finally
    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
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    public class class1
    {
     
     
     
        public class Utilisateur
        {
     
            private string nom;
            private string prenom;
            private int age;
            public Utilisateur(string n, string p)
            {
     
                nom = n;
                prenom = p;
     
     
     
     
            }
            public int Age
            {
     
                get
                {
     
                    return age;
                }
     
                set
                {
                    if (value > 109) { throw new Exception("age superieur à 109"); }
                    else { age = value; }
                }
            }
     
            public override string ToString()
            {
                Console.WriteLine(nom + " " + prenom + " " + age);
                return nom + " " + prenom + " " + age;
            }
     
     
     
     
     
     
        }
        static void Main(string[] args)
        {
     
            Utilisateur user = new Utilisateur("Laurent", "Durand");
            try { user.Age = 115; }
            catch (Exception e)
            {
                Console.WriteLine("l'age saisie est superieur à 109" + e);
                throw;
            }
            finally
            {
                Utilisateur user2 = new Utilisateur("Huguette", "Dupond");
                //user.ToString();
                user2.Age = 49;
     
                user2.ToString();
            }
     
     
            Console.WriteLine("Fin de main");
     
     
        }
     
     
    }
    Je suis un grand débutant merci pour votre aide

  2. #2
    Membre chevronné
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 640
    Points : 2 149
    Points
    2 149
    Par défaut
    Bonjour,

    Et bien tout est bon, il te suffit juste d'enlever le throw qu'il y a dans ton bloc catch. Je sais pas pourquoi tu en as rajouté un mais il te suffit de throw l'exception une seule fois.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 71
    Points : 50
    Points
    50
    Par défaut resolu
    merci beaucoup c'etait ça bon dimanche

  4. #4
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 757
    Points : 10 541
    Points
    10 541
    Billets dans le blog
    21
    Par défaut
    Je me permet d'intervenir même si le problème est résolu, car il l'est, mais pas pour les bonnes raisons !

    Reprenons donc. En réalité :
    - le finally est bien appelé. Rien ne s'affiche sur la console car... rien n'est affiché sur la console dans le finally. Un ToString() seul ne suffit pas. Il faut le Console.WriteLine !
    - le programme plante avec la première version car l'exception qui est générée est simplement relancée (via throw tout seul). Lors qu'elle est relancée, il n'y a pas d'autre bloc try pour la prendre en charge, le programme principal plante donc.

    Le fait de relancer ou non une exception dans un bloc catch dépend complètement de la manière dont on souhaite gérer l'exception. Lorsqu'on relance l'exception catchée, c'est généralement pour ajouter des logs, ou quand on a une logique de gestion des exceptions, mais que cette exception ne nous concerne pas et doit donc être remontée.
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 71
    Points : 50
    Points
    50
    Par défaut
    Merci pour tes précisions eclairantes j'avais pas tout compris
    il s'agissait en fait d’étendre la classe exception et de créer sa propre exception quand age est superieur à 109
    ma réponse etait donc fausse

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

Discussions similaires

  1. Tracé GPX qui ne s'affiche pas avec printMap
    Par edwix dans le forum IGN API Géoportail
    Réponses: 5
    Dernier message: 14/05/2011, 21h42
  2. Caractère qui ne s'affiche pas avec IE
    Par Rian83 dans le forum Langage
    Réponses: 12
    Dernier message: 31/03/2009, 20h59
  3. Infobulle en CSS qui ne s'affiche pas avec Opera
    Par xenos dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 27/02/2007, 12h03
  4. excel: colonne qui ne s'affiche pas dans une liste
    Par fast&furious dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/07/2006, 18h12
  5. Réponses: 3
    Dernier message: 02/05/2006, 14h29

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