Les exceptions
Exercice N°1
Sans Exception
public class Testexception
{
public static void main(String[] args) {
Scanner scanner = new Scanner([Link]);
[Link]("Entrez un nombre entier : ");
int nombre = [Link](); // Lève InputMismatchException si
on entre un texte
[Link]("Vous avez saisi : " + nombre);
[Link]();
}
}
Avec Exception
Exemple : Levée de InputMismatchException
package [Link];
import [Link];
import [Link];
public class Testexception
{
public static void main(String[] args) {
Scanner scanner = new Scanner([Link]);
int nombre = 0;
while (true) {
try {
[Link]("Entrez un nombre entier : ");
nombre = [Link]();
break; // Sortir de la boucle si l'entrée est correcte
} catch (InputMismatchException e) {
[Link]("Erreur : Vous devez entrer un nombre
entier !");
[Link](); // Nettoie l'entrée incorrecte
}
}
[Link]("Vous avez saisi : " + nombre);
[Link]();
}
}
Exécution
Exercice 1:
Écrire un programme Java qui lève une exception et la rattrape à l’aide
d’un bloc try-catch, si le diviseur est zéro.
Exemple:
Entrez le numérateur : 5
Entrez le diviseur : 0
Erreur : Division par zéro !
package [Link];
import [Link];
import [Link];
public class Testexception {
public static void main(String[] args) {
Scanner scanner = new Scanner([Link]);
try {
[Link]("Entrez le numérateur : ");
double numerateur = [Link]();
[Link]("Entrez le diviseur : ");
double diviseur = [Link]();
// Vérification si le diviseur est zéro
if (diviseur == 0) {
throw new ArithmeticException("Erreur : Division par
zéro !");
}
// Effectuer la division et afficher le résultat
double resultat = numerateur / diviseur;
[Link]("Le résultat de la division est : " +
resultat);
} catch (InputMismatchException e) {
// Gérer l'erreur si l'utilisateur entre autre chose qu'un
nombre
[Link]("Erreur : Vous devez entrer un nombre valide
!");
} catch (ArithmeticException e) {
// Gérer l'erreur de division par zéro
[Link]([Link]());
} catch (Exception e) {
// Gérer toutes les autres exceptions imprévues
[Link]("Une erreur inattendue s'est produite : " +
[Link]());
} finally {
// Fermer le scanner dans tous les cas
[Link]();
}
}
}
Exercice 2:
Écrire un programme Java pour créer une méthode qui prend un entier en
paramètre et qui lève une exception si le nombre est impair.
Exemple:
4 est paire.
Erreur: 3 est impaire.
package [Link];
public class Pair {
public static void main(String[] args) {
int n = 4;
check(n);
n = 3;
check(n);
}
public static void check(int n) {
try {
if (n % 2 != 0) {
throw new IllegalArgumentException(n +" est impaire.");
}
[Link](n +" est paire.");
} catch (IllegalArgumentException e) {
[Link]("Erreur: "+ [Link]());
}
}
}
throw est utilisé pour lancer une exception personnalisée (ici, une
exception IllegalArgumentException avec un message décrivant le
problème).
IllegalArgumentException est utilisée pour indiquer qu'un argument
passé à une méthode est invalide ou qu'il ne respecte pas les
conditions attendues par la méthode.
Exercice 3:
Écrire un programme Java qui demande à l’utilisateur d’entrer un nombre,
puis essaie de le convertir en entier. Si l’utilisateur entre une chaîne qui ne
peut pas être convertie en nombre, exemple ‘abc’, une
NumberFormatException sera levée.
Exemple:
Entrez un nombre : abc
Erreur : Veuillez entrer un nombre valide.
package [Link];
import [Link];
public class Intvalide {
public static void main(String[] args) {
Scanner scanner = new Scanner([Link]);
[Link]("Entrez un nombre : ");
String input = [Link]();
try {
// Tente de convertir la chaîne en entier
int nombre = [Link](input);
[Link]("Le nombre que vous avez entré est : " +
nombre);
} catch (NumberFormatException e) {
// Attrape l'exception si la conversion échoue
[Link]("Erreur : Veuillez entrer un nombre
valide.");
} finally {
[Link]();
}
}
}
Explication:
Lecture de l’entrée utilisateur : Le programme demande à
l’utilisateur d’entrer un nombre sous forme de chaîne.
Bloc try : Il essaie de convertir cette chaîne en entier à l’aide de
[Link](). Si l’entrée est une chaîne qui ne peut pas être
convertie en entier (comme « abc » ou « 12.34 »), une
NumberFormatException sera levée.
Bloc catch : Attrape la NumberFormatException et affiche un
message d’erreur pour informer l’utilisateur qu’il doit entrer un
nombre valide.
Bloc finally : Ferme le scanner pour libérer les ressources.
Exercice 4:
Écrire un programme Java qui crée un tableau et demande à l’utilisateur
d’entrer un index pour récupérer une valeur. Si l’utilisateur entre un index
qui est en dehors des limites du tableau, une
ArrayIndexOutOfBoundsException sera levée.
Exemple:
Entrez un index pour récupérer la valeur (0 à 4): 5
Erreur: L'index est en dehors des limites du tableau.
package [Link];
import [Link];
public class Indextab {
public static void main(String[] args) {
Scanner scanner = new Scanner([Link]);
// Création d'un tableau de taille 5
int[] tableau = new int[5];
// Remplir le tableau avec des valeurs
for (int i = 0; i < [Link]; i++) {
// Remplissage avec des multiples de 10
tableau[i] = i * 10;
}
[Link]("Entrez un index pour récupérer la valeur (0 à 4):
");
try {
// Lecture de l'index de l'utilisateur
int index = [Link]();
// Essayer de récupérer la valeur à cet index
[Link]("Valeur à l'index "+ index +" : "+
tableau[index]);
} catch (ArrayIndexOutOfBoundsException e) {
// Attraper l'exception si l'index est en dehors des limites
[Link]("Erreur: L'index est en dehors des limites
du tableau.");
} catch (Exception e) {
// Attraper d'autres exceptions possibles
[Link]("Erreur: Veuillez entrer un entier
valide.");
} finally {
[Link]();
}
}
}
Exercice 5:
Écrire un programme Java qui demande à l'utilisateur d'entrer une note
(un nombre entre 0 et 100). Le programme gère les exceptions suivantes :
InputMismatchException si l'utilisateur entre un type de données
non valide.
IllegalArgumentException si la note est en dehors de l'intervalle
valide (0 à 100).
Exemple:
Entrez une note (0 à 100) : 150
Erreur : La note doit être entre 0 et 100.
Fin du programme.
----------------------------------------
Entrez une note (0 à 100) : quatre-vingt
Erreur : Veuillez entrer un nombre entier valide.
Fin du programme.
package [Link];
import [Link];
import [Link];
public class Notesvalides {
public static void main(String[] args) {
Scanner scanner = new Scanner([Link]);
try {
[Link]("Entrez une note (0 à 100) : ");
// Ligne suivante peut lever InputMismatchException
int note = [Link]();
// Vérifier si la note est dans l'intervalle valide
if (note < 0 || note > 100) {
throw new IllegalArgumentException("Erreur : La note doit
être entre 0 et 100.");
}
[Link]("Vous avez entré la note : " + note);
} catch (InputMismatchException e) {
// Attrape l'exception si l'utilisateur entre un type de
// données non valide
[Link]("Erreur : Veuillez entrer un nombre entier
valide.");
} catch (IllegalArgumentException e) {
// Attrape l'exception si la note est en dehors des
// limites
[Link]("Erreur : " + [Link]());
} finally {
[Link]("Fin du programme.");
[Link](); // Fermer le scanner
}
}
}