100% ont trouvé ce document utile (3 votes)
1K vues4 pages

Es Exceptions: Exercice 1

Ce document présente quatre exercices sur les exceptions en Java. L'exercice 1 demande d'analyser un programme calculant une moyenne et de déterminer les exceptions levées. L'exercice 2 demande d'analyser les sorties possibles d'un autre programme de moyenne. L'exercice 3 demande de modifier un constructeur pour lever une exception sur les valeurs invalides. L'exercice 4 demande d'améliorer un programme de factorielle pour gérer différentes exceptions.

Transféré par

Louay Sejine
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
100% ont trouvé ce document utile (3 votes)
1K vues4 pages

Es Exceptions: Exercice 1

Ce document présente quatre exercices sur les exceptions en Java. L'exercice 1 demande d'analyser un programme calculant une moyenne et de déterminer les exceptions levées. L'exercice 2 demande d'analyser les sorties possibles d'un autre programme de moyenne. L'exercice 3 demande de modifier un constructeur pour lever une exception sur les valeurs invalides. L'exercice 4 demande d'améliorer un programme de factorielle pour gérer différentes exceptions.

Transféré par

Louay Sejine
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
Vous êtes sur la page 1/ 4

Faculté des Sciences de Bizerte Programmation Orientée Objet (JAVA)

Département Informatique GLSI 2

TP5 : LES EXCEPTIONS

Exercice 1 :
Que donne le programme CalculeMoyenne lancé avec les paramètres suivants (introduits
à travers la ligne de commande) : x 2 –1 30 18 et x –3 2.3 ?

Quelles sont les exceptions prédéfinies et capturées par ce programme ?

Quelles sont les exceptions crées par le programmeur ?

class CalculeMoyenne
{
static int moyenne(String[ ] liste) throws ExceptionRien

{
int somme=0,entier, nbNotes=0;
for (int i = 0 ; i<liste.length ; i++)
{
try
{
entier=Integer.parseInt (liste[i]);
if (entier < 0) throw new ExceptionIntervalle ("petite");
else if (entier>20) throw new ExceptionIntervalle ("grande");
else
{
somme+=entier;
nbNotes++;
}
}
catch (NumberFormatException e)
{
System.out.println("La note n°"+(i+1)+" n'est pas entière");
}
catch (ExceptionIntervalle e)
{
System.out.println ("La note n°"+(i+1)+ " est trop
"+e.getMessage());
}
}// fin for
if (nbNotes==0)
throw new ExceptionRien ( );
return (int)somme/nbNotes;
}
public static void main (String [ ] args)
{
try
{
System.out. println("La moyenne est : "+moyenne(args));
}
catch (ExceptionRien e)
{
System.out.println(e);

Page 1 sur 4
}
}
}

class ExceptionRien extends Exception


{
public String toString ( )
{
return ("Aucune note n'est valide");
}
}
class ExceptionIntervalle extends Exception
{
ExceptionIntervalle (String s)
{
super(s);
}
}

Exercice 2
Il s'agit de deviner ce que fait le programme suivant pour les instructions :
Java TestMoyenne 15 14 xx 12
Java TestMoyenne xx
Java TestMoyenne
Indication :
Java désigne ici le nom de l'interpréteur du langage Java
class TestMoyenne
{
static int moyenne (String [ ] liste) throws ArithmeticException
{
int somme=0,entier, nbNotes=0;
int i=0;
for (i=0;i<liste.length;i++)
{
try
{
entier=Integer.parseInt(liste[i]);
somme+=entier;
nbNotes++;
}
finally
{
System.out.println("Donnée traitée : "+liste[i]);
}
}
return somme/nbNotes;
}
public static void main(String [ ] args)
{
try
{
System.out. println("La moyenne est : "+moyenne(args));
}
catch (NumberFormatException e)
{

Page 2 sur 4
System.out.println("Erreur sur vos entiers");
}
catch (ArithmeticException e)
{
System.out.println ("Erreur, pas de paramètres");
}
}
}
}

Exercice 3
Soit la classe Temps suivante :
class Temps
{
private int heures;
private int minutes;
private int secondes;

Temps (int h, int m, int s)


{
heures = h;
minutes = m;
secondes = s;
}
public static void main (String [ ] args)
{
Temps t = new Temps (24, 12, 67);
}
}

1) Modifier le constructeur de cette classe de manière à ce qu'il lance une exception de


type TempsException (qu'il ne traitera) si les heures, les minutes ou les secondes ne
correspondent pas à un temps valide
2) Modifier le code de la méthode main de manière à ce que l'exception TempsException
soit traitée en affichant le message suivant : "Temps invalide"

Exercice 4
Soit le programme suivant qui calcule la factorielle d'un entier passé comme paramètre à
travers la ligne de commande :

public class TestFact


{
public static void main (String [ ] args)
{
int n = Integer.parseInt(args[0]);
if (n == 0) System.out.println ("La factorielle de "+n+" est: 1");
else {
int f = 1;
for (int i=2; i <= n; i++) f = f*i;

Page 3 sur 4
System.out.println ("La factorielle de "+n+" est: "+f);
}
}
}

Il s'agit de reprendre ce programme pour l'améliorer en attrapant différentes exceptions


de façon à préciser la difficulté à l'utilisateur, lorsque le calcul de la factorielle est
impossible.

Les exceptions à prévoir sont :

Il n'y a pas de paramètre sur la ligne de commande

Le paramètre n'est pas entier

Le paramètre est négatif

Pour chacun de ces cas l'erreur doit être signalée de façon précise à l'utilisateur.

Indications :

 Si args[0] n'est pas un entier la méthode parseInt lance une exception instance
de NumberFormatException (du package java.lang)
 Si l'accès à un tableau se fait avec un indice erroné (indice négatif ou supérieur à
la taille du tableau) une exception instance de
ArrayIndexOutOfBoundsException (du package java.lang) est lancée

Page 4 sur 4

Vous aimerez peut-être aussi