0% ont trouvé ce document utile (0 vote)
6 vues25 pages

Gestion des exceptions en Java

Le document traite des exceptions en Java, expliquant leur définition, les différentes catégories (Error, Exception, RuntimeException) et comment les gérer à l'aide des blocs try-catch-finally. Il aborde également la création d'exceptions personnalisées et la gestion des fichiers via la classe java.io.File, ainsi que les flux d'entrée/sortie pour la lecture et l'écriture de données. Des exemples de code illustrent la manipulation des exceptions et des fichiers.

Transféré par

mimisaleh08
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
0% ont trouvé ce document utile (0 vote)
6 vues25 pages

Gestion des exceptions en Java

Le document traite des exceptions en Java, expliquant leur définition, les différentes catégories (Error, Exception, RuntimeException) et comment les gérer à l'aide des blocs try-catch-finally. Il aborde également la création d'exceptions personnalisées et la gestion des fichiers via la classe java.io.File, ainsi que les flux d'entrée/sortie pour la lecture et l'écriture de données. Des exemples de code illustrent la manipulation des exceptions et des fichiers.

Transféré par

mimisaleh08
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

JAVA et Programmation orienté

objet
RAPPELS

KEBIRA AZBEG - SYSTÈMES RÉPARTIS - 2023/2024 1


Les Exceptions

KEBIRA AZBEG - SYSTÈMES RÉPARTIS - 2023/2024 2


Introduction
• Un programme peut échouer pour presque n'importe quelle raison.
• Voici quelques possibilités :
• Le code essaie de se connecter à un site web, mais la connexion Internet est
interrompue.
• Vous avez commis une erreur de codage et essayé d'accéder à un indice
invalide dans un tableau.
• Une méthode appelle une autre avec une valeur que la méthode ne prend
pas en charge.

• Certaines de ces raisons sont des erreurs de codage. D'autres


échappent complètement à votre contrôle.
• Votre programme ne peut rien faire si la connexion Internet est
interrompue. Ce qu'il peut faire, c'est gérer la situation.
=> Les exceptions représentent le mécanisme de gestion des erreurs.

KEBIRA AZBEG - SYSTÈMES RÉPARTIS - 2023/2024 3


Définition
• Une exception est une erreur se produisant dans un programme qui
conduit le plus souvent à l'arrêt de celui-ci.
• Le fait de gérer les exceptions s'appelle aussi « la capture d'exception ».
• Le principe consiste à repérer un morceau de code (par exemple, une
division par zéro) qui pourrait générer une exception, de capturer
l'exception correspondante et enfin de la traiter.
• Afficher un message personnalisé et de continuer l'exécution.

KEBIRA AZBEG - SYSTÈMES RÉPARTIS - 2023/2024 4


Définition
Catégories des exceptions:
1- Celles définies en étendant la classe Error :
• représentent des erreurs critiques qui ne sont pas
censée être gérées en temps normal.
• Par exemple, une exception de type
OutOfMemoryError est lancée lorsqu’il n’y a plus
de mémoire disponible dans le système.

2- Celles définies en étendant la classe Exception :


• représentent les erreurs qui doivent normalement
être gérées par le programme.
• Par exemple, une exception de type IOException
est lancée en cas d’erreur lors de la lecture d’un
fichier.

KEBIRA AZBEG - SYSTÈMES RÉPARTIS - 2023/2024 5


Définition
Catégories des exceptions:
3- Celles définies en étendant la classe
RuntimeException:
• représentent des erreurs pouvant éventuellement
être gérées par le programme.
• L’exemple typique de ce genre d’exception est
NullPointerException, qui est lancée si l’on tente
d’accéder au contenu d’un tableau ou d’un objet
qui vaut null.

KEBIRA AZBEG - SYSTÈMES RÉPARTIS - 2023/2024 6


Traitement des exceptions
Rattraper une Exception:
◦ Pour capter et traiter des exceptions on utilise le bloc try{…}catch{…}finally{…}:
try {
// les instructions susceptibles de provoquer des exceptions
// incluant éventuellement des appels de fonction

} catch ( exception-1 id-1 ) {


//les instructions pour gérer l’exception exception-1

} catch ( exception-2 id-2 ) {


//les instructions pour gérer l’exception exception-2

} finally {
// instructions à exécuter à chaque fois que ce bloc try s'exécute (facultative).

}
KEBIRA AZBEG - SYSTÈMES RÉPARTIS - 2023/2024 7
Traitement des exceptions
Rattraper une Exception:

• S'il y a plusieurs types d'erreurs et d'exceptions à intercepter, il faut


définir autant de blocs catch que de types d'événements.
• Dans l'ordre séquentiel des clauses catch, un type d'exception ne doit
pas venir après un type d'une exception d'une super-classe.
• Il faut faire attention à l'ordre des clauses catch pour traiter en premier
les exceptions les plus précises (sous-classes) avant les exceptions plus
générales.

KEBIRA AZBEG - SYSTÈMES RÉPARTIS - 2023/2024 8


Traitement des exceptions
◦ Exemple:

KEBIRA AZBEG - SYSTÈMES RÉPARTIS - 2023/2024 9


Traitement des exceptions
Lancer une Exception: throw et throws
• Lors de la détection d'une erreur, un objet qui hérite de la classe
Exception est créé (on dit qu'une exception est levée) et propagé à
travers la pile d'exécution jusqu'à ce qu'il soit traité.
• Lorsque l’on veut lancer une exception, on utilise le mot clé throw suivi
de l’exception à lancer.
• Cette exception doit être d’abord créée avec new NomException().
• Pour déclarer les exceptions qui peuvent être lancées dans une
méthode on utilise throws.
• Une méthode avec une propriété throws peut lancer des exceptions
avec throw.

KEBIRA AZBEG - SYSTÈMES RÉPARTIS - 2023/2024 10


Traitement des exceptions
Lancer une Exception: throw et throws
• Exemple

• Dans cet exemple, la méthode setNumberEggs peut potentiellement


lancer une exception de type IllegalArgumentException.
• IllegalArgumentException lancée pour indiquer qu'une méthode a reçu
un argument illégal ou inapproprié.

KEBIRA AZBEG - SYSTÈMES RÉPARTIS - 2023/2024 11


Exceptions personnalisées
• En Java, il est possible de créer des exceptions personnalisées pour
gérer des situations spécifiques à votre application.
• Pour créer une exception personnalisée, vous devez créer une classe
qui étend l'une des classes d'exception de base de Java, généralement
"Exception" ou "RuntimeException", en fonction de votre besoin.
Syntaxe
public class MonExceptionPerso extends Exception {
public MonExceptionPerso() {
super("Message d'erreur de mon exception personnalisée");
}

public MonExceptionPerso(String message) {


super(message);
}
}
KEBIRA AZBEG - SYSTÈMES RÉPARTIS - 2023/2024 12
Exceptions personnalisées
• Exemple:
public class TropChaudException extends Exception {
public TropChaudException(String message) {
super(message);
}
public static void main(String[] args) {
}
int temperature = 110;
try {
if (temperature > 100) {
throw new TropChaudException("La température est trop élevée !");
}
[Link]("La température est normale.");
} catch (TropChaudException e) {
[Link]("Exception : " + [Link]());
}
}
}
KEBIRA AZBEG - SYSTÈMES RÉPARTIS - 2023/2024 13
La gestion de fichiers, flux
d’entrée / sortie

KEBIRA AZBEG - SYSTÈMES RÉPARTIS - 2023/2024 14


Gestion de fichiers
•La gestion de fichiers se fait par l’intermédiaire de la classe [Link].

•Cette classe possède des méthodes qui permettent d’interroger ou d’agir sur le
système de fichiers du système d’exploitation.

•Un objet de la classe [Link] peut représenter un fichier ou un répertoire.

•Déclaration :

File monFichier = new File( [Link]);


• Il s’agit de la création d’objet File et non du fichier physique

[Link]();
• Création du fichier portant le nom [Link]

KEBIRA AZBEG - SYSTÈMES RÉPARTIS - 2023/2024 15


Méthodes de la classe [Link]
• File (String pathName)

• File (String path, String name)

• File (File dir, String name)

• boolean isFile () : vérifie s’il s’agit d’un fichier

• boolean isDirectory () : vérifie s’il s’agit d’un répertoire

• boolean mkdir () : création d’un répertoire

• boolean exists () : vérifie s’il existe ou non

• boolean delete () : supprime le fichier ou le répertoire

• boolean canWrite () : vérifie si le fichier peut être modifié

• boolean canRead () : vérifie si le fichier peut être lu

• File getParentFile () : renvoie le répertoire parent

• String [] list () : renvoie la liste des fichiers et des répertoires connu dans le répertoire
KEBIRA AZBEG - SYSTÈMES RÉPARTIS - 2023/2024 16
Les flux
• Pour obtenir des données, un programme ouvre un flux de données sur
une source de données(fichier, clavier, mémoire, etc).

• De la même façon pour écrire des données dans un fichier, un


programme ouvre un flux de données.

• Java emploie un flux (stream en anglais) entre la source et la


destination des données.

• Le flux est un canal de communication dans lequel les données sont


écrites ou lues de manière séquentielle.

KEBIRA AZBEG - SYSTÈMES RÉPARTIS - 2023/2024 17


Les flux
• Deux groupes de classes manipulent des flux :
◦ les classes (abstraites)qui manipulent des flux d’octets (ou bytes) :
◦ La classe InputStream et ses dérivées pour lire des octets (FileInputStream),

◦ La classe OutputStream et ses dérivées pour écrire des octets (FileOutputStream)

◦ Les classes (abstraites) qui manipulent des flux de caractères :


◦ La classe Reader et ces dérivées (BufferedReader, FileReader)

◦ La classe Writer et ces dérivées (BufferedWriter, FileWriter)

• Toutes les classes d'entrée/sortie sont dans le package [Link].

• Toutes les méthodes peuvent générer une [Link].

KEBIRA AZBEG - SYSTÈMES RÉPARTIS - 2023/2024 18


Classes de flux d’octets
• Les classes qui gèrent les flux d'octets héritent d'une des deux classes
abstraites InputStream ou OutputStream.

KEBIRA AZBEG - SYSTÈMES RÉPARTIS - 2023/2024 19


InputStream
les flux de communication:

FileInputStream:
◦ Permet de créer un flux avec un fichier présent dans le système de fichiers.
◦ Possède un constructeur prenant en paramètre un objet de type File et un autre
prenant un String comme paramètre, qui représente le chemin vers le fichier.

ByteArrayInputStream:
◦ Permet de lire des données binaires à partir d'un tableau d'octets.
◦ La source de ce flux est le programme lui-même.

PipedInputStream:
◦ Permet de créer une sorte de tube d'entrée (pipe) dans lequel circuleront des
octets.

KEBIRA AZBEG - SYSTÈMES RÉPARTIS - 2023/2024 20


InputStream
Les flux de traitement:

BufferedInputStream:
◦ Cette classe permet la lecture de données à l'aide d'un tampon.

◦ Lorsqu'elle est instanciée, un tableau d'octets est créé afin de servir de tampon. Ce tableau est redimensionné
automatiquement à chaque lecture pour contenir les données provenant du flux d'entrée.

DataInputStream:

◦ Sert à lire des données représentant des types primitifs de Java (int, boolean, double, byte, ...) qui ont été
préalablement écrits par un DataOutputStream.

◦ Possède des méthodes comme : readInt(), readBoolean(), ...

ObjectInputStream:

◦ Permet de «désérialiser» un objet, c'est-à-dire de restaurer un objet préalablement sauvegardé à l'aide


d'un ObjectOutputStream..

KEBIRA AZBEG - SYSTÈMES RÉPARTIS - 2023/2024 21


InputStream
String nomFichier = "C:\\[Link]";
• try
Exemple
{
// Crée un objet FileInputStream pour lire le fichier
FileInputStream input = new FileInputStream(nomFichier);
// Crée un tampon pour stocker les octets lus à partir du fichier
byte[] tampon = new byte[1024];
int octetsLus;
// Lit le contenu du fichier et l'affiche à la console
while ((octetsLus = [Link](tampon)) != -1) {
// Transforme les octets lus en une chaîne de caractères
String texte = new String(tampon, 0, octetsLus);
[Link](texte);
}
[Link](); // fermer le FileInputStream
[Link]("\nLecture du fichier terminée avec succès.");
} catch (IOException e) {
[Link]();
}
KEBIRA AZBEG - SYSTÈMES RÉPARTIS - 2023/2024 22
OutputStream
Pour chaque flux d'entrée qu'on a vu, correspond un flux de sortie

Les flux de communication:

FileOutputStream:
◦ permet l'écriture séquentielle de données dans un fichier

ByteArrayOutputStream:
◦ permet d'écrire les données dans un tampon dont la taille s'adapte en fonction du besoin.

◦ On peut récupérer les données écrites avec la méthode toByteArray() ou bien toString().

PipedOutputStream:
◦ Permet la création d'un tube (pipe)

KEBIRA AZBEG - SYSTÈMES RÉPARTIS - 2023/2024 23


OutputStream
Les flux de traitement:

BufferedOutputStream:
◦ Permet d'écrire dans un tampon puis d'écrire le tampon en entier sur le fichier au lieu
d'écrire octet par octet sur le fichier.

DataOutputStream:
◦ Permet l'écriture de données sous format Java et assure une portabilité inter-
applications et inter-systèmes.

ObjectOutputStream:
◦ Permet de sauvegarder l'état d'un objet dans un fichier ou autre. Pour cela, l'objet doit
implémenter l'interface serializable.

KEBIRA AZBEG - SYSTÈMES RÉPARTIS - 2023/2024 24


OutputStream
String nomFichier = "C:\\[Link]";
try {
// Crée un objet FileOutputStream pour écrire dans le fichier
FileOutputStream output = new FileOutputStream(nomFichier);

// Convertit la chaîne de caractères en tableau d'octets


String texte = "test";
byte[] donnees = [Link]();
// Écrit les données dans le fichier
[Link](donnees);
[Link](); // fermer le FileOutputStream
[Link]("Écriture dans le fichier binaire terminée avec succès.");
} catch (IOException e) {
[Link]();
}

KEBIRA AZBEG - SYSTÈMES RÉPARTIS - 2023/2024 25

Vous aimerez peut-être aussi