Université virtuelle de Tunis Master N2TR
Programmation Orientée Objet et Langage Java
TD N°5
OBJECTIFS: - Exception.
EXERCICE 1
Soit le programme suivant :
class Erreur extends Exception
{public int num; }
class Erreur_d extends Erreur
{public int code; }
class A
{
public A(int n) throws Erreur_d
{
if (n==1)
{
Erreur_d e = new Erreur_d(); e.num=999; e.code=12;
throw e;
}
}
}
public class Chemin
{
public static void main(String [] args)
{
try
{A a = new A(1);
System.out.println("Après création a(1)");
}
catch (Erreur e)
{System.out.println(" *** execption Erreur " + e.num);
}
System.out.println("Suite de main");
try
{A b = new A(1);
System.out.println("Après création b(1)");
}
catch (Erreur_d e)
{System.out.println(" *** execption Erreur_d " + e.num+ " "+e.code);
}
catch (Erreur e)
{System.out.println(" *** execption Erreur " + e.num);
}
}
}
Tuteur : Dr Sahbi Bahroun 1
Université virtuelle de Tunis Master N2TR
Questions :
1) Que fournit le programme suivant ?
2) Que se passe-t-il si l'on inverse l'ordre des deux gestionnaires dans le second bloc
try ?
EXERCICE 2
Soit le programme suivant :
class Except extends Exception { }
public class FinReThrow
{
public static void f (int n ) throws Except
{
try
{ if (n!=1) throw new Except();}
catch (Except e)
{ System.out.println ("catch dans f avec n = " +n);
throw e; }
finally
{ System.out.println("dans finally de f avec n = " +n); }
}
public static void main (String [] args)
{int n = 0;
try
{ for (n=1; n<5; n++)
f(n); }
catch (Except e)
{ System.out.println("catch dans main avec n = " +n);}
finally
{ System.out.println("dans finally de main avec n = " +n);}
}
}
Question :
Que fournit le programme suivant ?
EXERCICE 3
Soit le programme Temps suivant :
public class Temps
{
private int heures;
private int minutes;
private int seconde;
public Temps (int h, int m, int s)
{ heures = h;
minutes = h;
secondes = s;
}
public static void main(String args[])
Tuteur : Dr Sahbi Bahroun 2
Université virtuelle de Tunis Master N2TR
{ int h,m,s; h=Clavier.lireInt(); m=Clavier.lireInt(); s=Clavier.lireInt();
Temps t = new Temps (h, m, s); }
}
Questions :
1) Modifier le constructeur de la classe Temps de manière à ce qu'il lance une
exception de type TempsException si les heures, les minutes ou les secondes ne
correspondent pas à un temps valide. La classe TempsException est à définir.
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".
Tuteur : Dr Sahbi Bahroun 3