24 Mar2016
Gestion des exceptions
Objectif: Gérer les exceptions en C#
- Écrire un programme dans lequel on demande à l’utilisateur de saisir un entier en gérant l’exception dans le cas où il ne saisit pas un entier correctement.
- Écrire un programme dans lequel on demande à l’utilisateur de saisir un entier en gérant l’exception dans le cas où il ne saisit pas un entier correctement en lui demandant de refaire la saisie.
- Écrire un programme dans lequel on demande à l’utilisateur de saisir son date de naissance en gérant l’exception dans le cas où il ne saisit pas une date valide en lui demandant de refaire la saisie.
- Ecrire un programme qui demande à l’utilisateur une date de départ et une date d’arrivée, générer une exception si la date d’arrivée et inférieure à la date de départ.
- Créer une classe Élèves caractérisée par nom, âge et moyenne.
- L’âge doit être entre 18 et 26 sinon l’exception InvalidAgeException (elle affiche le message "L’âge doit être entre 18 et 26") est générée.
- La note doit être entre 0 et 20 sinon l’exception InvalidNoteException est générée (elle affiche le message "La note doit être entre 0 et 20").
Définir les constructeurs de la classe, les accesseurs et les méthodes ToString.
Question 1:
class Program { static void Main(string[] args) { int a; try { Console.Out.WriteLine("Donner un entier: "); a = Int16.Parse(Console.In.ReadLine()); //Instruction susceptible de générer une exception Console.Out.WriteLine("Votre entier est: " + a); } catch (Exception e) { Console.Out.WriteLine(e.Message); //Gestion de l'exception } Console.ReadKey(); }
Question 2: Méthode 1
class Program { static void Main(string[] args) { int a; bool r; do { try { r = true; Console.Out.WriteLine("Donner un entier: "); a = Int16.Parse(Console.In.ReadLine()); Console.Out.WriteLine("Votre entier est: " + a); } catch (Exception e) { Console.Out.WriteLine(e.Message); r = false; } } while (r == false); Console.ReadKey(); }
Question 2: Méthode 2:
class Program { static void Main(string[] args) { int a; e: try { Console.Out.WriteLine("Donner un entier: "); a = Int16.Parse(Console.In.ReadLine()); Console.Out.WriteLine("Votre entier est: " + a); } catch (Exception e) { Console.Out.WriteLine(e.Message); goto e; } Console.ReadKey(); }
Question 3:
class Program { static void Main(string[] args) { l: try //Marquer une étiquette nommée l { Console.Out.WriteLine("Donner votre date de naissance (jj/mm/aaaa): "); DateTime d = DateTime.Parse(Console.In.ReadLine()); //Instruction susceptible de générer une exception Console.Out.WriteLine("Votre date de naissance est: " + d.ToShortDateString()); } catch (Exception e) { Console.Out.WriteLine(e.Message); //Gestion de l'exception goto l; //Aller à l'étiquette l } Console.ReadKey(); }
Question 4:
class Program { static void Main(string[] args) { Console.Out.WriteLine("Donner la date de départ (jj/mm/aaaa): "); DateTime dp = DateTime.Parse(Console.In.ReadLine()); Console.Out.WriteLine("Donner la date d'arrivée (jj/mm/aaaa): "); DateTime da = DateTime.Parse(Console.In.ReadLine()); if (da.Date < dp.Date) throw new Exception("Date d'arrivée doit être supérieure à la date de départ"); //Générer une exeption avec un message personnalisé else { Console.Out.WriteLine("Date de départ: " + dp.ToShortDateString()); Console.Out.WriteLine("Date d'arrivée: " + da.ToShortDateString()); } Console.ReadKey(); }
Question 5:
La classe InvalidAgeException:
class InvalidAgeException : Exception { public InvalidAgeException() : base() { } public override string Message //Redéfinition de la propriété Message { get { return "L’âge doit être entre 18 et 26"; } } }
La classe InvalidNoteException:
class InvalidNoteException : Exception { public InvalidNoteException() : base() { } public override string Message //Redéfinition de la propriété Message { get { return "La note doit être entre 0 et 20"; } } }
La classe Eleve:
class Eleve { private string nom; private int age; private double moyenne; public string Nom { get { return nom; } set { nom = value; } } public int Age { get { return age; } set { if (value >= 18 && value <= 26) age = value; else throw new InvalidAgeException(); //Générer une exception de type InvalidAgeException } } public double Moyenne { get { return moyenne; } set { if (value >= 0 && value <= 20) moyenne = value; else throw new InvalidNoteException(); //Générer une exception de type InvalidNoteException } } public Eleve() { } public Eleve(string n, int a, double m) { nom = n; Age = a; //Initialiser l'age à travers sa propriété pour tenir compte de l'exception InvalidAgeException Moyenne = m; //Initialiser la moyenne à travers sa propriété pour tenir compte de l'exception InvalidNoteException } public override string ToString() { return "Nom: "+nom+" Age: "+age+" Moyenne: "+moyenne; } }
Le programme de test:
Eleve e = new Eleve("SALIM", 20, -1); //Observer l'exception générée Console.Out.WriteLine(e); Console.ReadKey();