Cette série propose quelques exercices sur la gestion des exceptions (à laquelle nous vous proposons de dédier une heure de temps). L'essentiel de la série est autrement dédiée à continuer à progresser sur la réalisation du second mini-projet.
Cette semaine vous devez visionner les vidéos de la semaine 6 du MOOC. Pour bien assimiler ce contenu, il est recommandé de faire les quiz des mêmes semaines: Quiz «Exceptions».
Ajoutez au programme fourni des commentaires répondant aux questions posées.
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 77 78 |
class Exemple {
/*Expliquer pourquoi ce code ne compile pas
*/
public void m1() {
foo();
}
public int foo() throws Exception {
throw new Exception();
}
/*Expliquer pourquoi ce code n'est pas considéré comme bon
*/
public void m2() {
try {
//do stuff...
} catch (Exception e) {
}
}
/*Expliquer pourquoi ce code ne compile pas
*/
public void m3() {
try {
//do stuff...
} catch (Exception e) {
} catch (NullPointerException e) {
}
}
/*Expliquer pourquoi ce code ne compile pas
*/
public void m4() {
throw new CustomCheckedException();
}
private class CustomCheckedException extends Exception {
private static final long serialVersionUID = -7944813576443065516L;
public CustomCheckedException() {
//nothing
}
}
/*Expliquer pourquoi ce code ne compile pas
*/
public int m5() {
int age;
String s = "24";
try {
age = getAccessCode();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return age;
}
public int getAccessCode() throws IllegalAccessException {
throw new IllegalAccessException();
}
/*Expliquer pourquoi ce code COMPILE
*/
public void m6() {
bar();
}
public int bar() {
throw new RuntimeException();
}
} |
Le programme fourni ne fait aucune vérification sur l'intégrité des données servant à la création d'un objet de type Project.
Modifiez-le de sorte à :
les nom, sujet et durée seront redemandés à l'utilisateur tant qu'ils sont introduits de façon incorrecte.
Vous introduirez pour cela deux classes d'exceptions personalisées WrongDurationException et NameTooLongException
Si strNumber ne corresponds pas à un int une RunTimeException de type NumberFormatException sera lancée.
Pour cet exercice munissez-vous d'une feuille de papier et d'un crayon.
Soit le programme suivant :
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 |
// Note : le message de mise en garde de Eclipse:
// the serializable class NietException does not declare a static
// final serialVersionUID field of type long
// peut etre neglig'e.
class Censure {
public static void main(String[] args) {
Site s1 = new Site("cowww.epfl.ch/coursOOP/", "Prof d'info");
Site s2 = new Site("www.PCcrackers.com", "Hackers Inc.");
try {
System.out.println("Trying " + s1.getAddress());
s1.connect();
System.out.println("Argh !!");
try {
System.out.println("Trying " + s2.getAddress());
s2.connect();
System.out.println("Woaw !");
} catch (NietException e) {
System.out.println(e.getMessage());
System.out.println("Do you really want to be here ?");
throw e;
} finally {
System.out.println("Finally !");
}
System.out.println("Happy end!");
} catch (NietException e) {
System.out.println(e.getMessage());
System.out.println("Is Big brother watching you ?");
}
System.out.println("Stop surfing !");
}
}
class Site {
private String address;
private String source;
public Site(String address, String source) {
this.address = address;
this.source = source;
}
public void connect() throws NietException {
if (source.equals("Hackers Inc.")) {
throw new NietException();
} else {
System.out.println("Connected to " + address);
}
}
public String getAddress() {
return address;
}
}
class NietException extends Exception {
public NietException() {}
@Override
public String getMessage() {
return "Illegal move";
}
} |
Indiquez sans exécuter le programme ce qu'il va afficher.
Vérifiez ensuite votre réponse en exécutant le programme.
Pour cet exercice, incorporez au projet Eclipse créé pour cet exercice, les fichiers fournis UtilsMatrix.java et MatrixTest.java, dans le dossier src/
La classe fournie UtilsMatrix vous fait revisiter le thème de la multiplication de matrices. Modifiez-la de sorte à ce qu'il lance une exception de type CustomException en toute situation d'erreur.
Commencez par configurer votre projet pour les tests unitaires.
Pour Eclipse : clic-droit sur le projet -> Build Path -> Add librairies... et sélectionner junit puis JUnit4 dans la liste déroulante.
Pour lancer le test : clic-droit sur MatrixTest > Run as > Junit test
Si vous avez bien anticipé toutes les situations à gérer par des exceptions, il y aura 6 tests sur 6 réussis (ce sera indiqué dans Eclipse). Sinon, ceux qui auront échoué vous mettront sur la voie de ce qui manque.
Dernière mise à jour: 25/11/2025 (Revision: 1.2)