Vous êtes sur la page 1sur 20

TP N°4: Gestion des

entrées/sorties et exceptions
Mokaddem Dorsaf
LTIC2 /G1A
Sommaire

Gestions des
Objectives Introductions Les exceptions entrées-
sorties (I/O)

2
20XX
I. Objectives :
Les exceptions: Gestions des entrées-sorties (I/O) :

◦ Apprendre le rôle les exceptions ◦ C’est quoi la gestions des entrées sorties
◦ Qu’est ce qu’un exception ◦ Le syntaxe d’entrées sorties
◦ Le syntaxe d’exception ◦ Faire un programme on appliquant les
◦ Faire un programme on appliquant les entrées sorties
exceptions

3
II. Introduction:
Les exceptions : Gestions des entrées-sorties (I/O):

◦ De nombreux langages de programmation de ◦ En Java, les échanges de données entre un


haut niveau possèdent un mécanisme permettant programme et l’extérieur (autre programme,
de gérer les erreurs qui peuvent intervenir lors de fichier, réseau) sont effectués par un « flot ou
l’exécution d’un programme flux (streams en anglais) » de données
◦ Le mécanisme de gestion d’erreur le plus ◦ Un flot permet de transporter séquentiellement
répandu est celui des exceptions des données
◦ Le concept d’exception : ◦ Les données sont transportées une par une (ou
➢ Lorsqu’une fonction n’est pas définie pour groupe par groupe), de la première à la dernière
certaines valeur de ses arguments on lance une donnée
exception

4
III. Les exceptions:
◦ Error : classe prédéfinie en Java pour traiter les exceptions
◦ Définir des exceptions :
- Afin de définir une nouvelle sorte d’exception, on crée une nouvelle classe en utilisant une déclaration de la
forme suivante :
class NouvelleException extends ExceptionDejaDefinie {}
◦ NouvelleException est le nom de la classe d’exception que l’on désire définir en “étendant”
ExceptionDejaDefinie qui est une classe d’exception déjà définie
◦ Sachant que Error est prédéfinie en Java, la déclaration suivante définit bien une nouvelle classe d’exception
PasDefini : class PasDefini extends Error {}

Lancer une exception


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()
de la même manière que lorsque l’on crée un nouvel objet par un appel à l’un des constructeurs de sa classe
Ainsi lancer une exception de la classe PasDefini s’écrit : throw new PasDefini();
Rattraper une exception : la construction try catch:
◦ Le rattrapage d’une exception en Java se fait en utilisant la construction
try {
... // 1
}
catch (UneException e) {
... // 2
}
.. // 3
• Le code 1 est normalement exécuté
• Si une exception est lancée lors de cette exécution, les instructions restantes dans le code 1 sont sautées
• Si la classe de l’exception est UneException, alors le code 2 est exécuté
• Dans le code 2, on peut faire référence à l’exception en utilisant le nom donné à celle-ci après sa classe (ici le nom est e)
• Si la classe de l’exception n’est pas UneException, le code 2 et le code 3 sont sautés
Exemple pour expliquer l’utilité d’exception :

• Dans ce cas on n’utilise pas


l’exception alors l’exécution va
s’arrêter à la ligne 6, Il va exécuter
seulement l’instruction n°1 .
• Alors il affiche « Exception » et ne
complète pas l’exécution du
programme si ce trouve un erreur
➢ La solution est d’ajouter l’exception
Interprétation :
Lorsque on ajoute les
instructions :
try {} .. catch {}
Il va exécuter l’instruction
n°1 , indiquer l’exception et
exécuter l’instruction n°3,
On utilisant les syntaxes et les propriétés :
Rôle :Le programme nous permette de vérifier la validité du numéro ooredoo .
Le boc finally:
• Le mot-clé finally sert à définir un bloc de code qui sera toujours exécuté
après un bloc try, même si aucune exception n’a été lancée. Ce bloc permet
d’effectuer des opérations de nettoyage qu’il aurait éventuellement été
nécessaire de dupliquer dans les parties try et catch: c’est par exemple un bon
endroit pour fermer des flux qui ont été ouvert dans le try afin d´éviter toute
fuite de ressources.
• Le bout de code suivant est alors à rajouter à la suite du code try précédent :
finally { // code toujours exécuté à la suite d’un try }
• Si l’action effectuée dans le finally peut lancer une exception, on peut
englober ce try-finally dans un try-catch, ou simplement propager l’exception
à la méthode appelante par throws.
IV. Gestions des entrées-sorties (I/O):
Les flux :
Pour obtenir des données (des valeurs entières, flottantes, des caractères, des chaînes REMARQUE :
de caractères, etc...), un programme utilise un flux de données (un stream) sur une Notez l’instruction :
source (un fichier, le disque, le clavier, etc...). Les flux de données sont gérés en Java à fileOut.close();
l’aide de classes du package java.io qui permettent de manipuler les entrées-sorties (i/o Elle ferme le flux .
= inputoutput) dans un format caractère ou dans un format binaire. Ces classes
peuvent être regroupées en 4 catégories :
• les flux binaires pour lire et écrire octet par octet :
– la classe InputStream et ses sous-classes (FileInputStream) pour la lecture.
– le classe OuputStream et ses sous-classes (FileOutputStream) pour l’écriture.
• les flux de caractères pour lire et écrire caractère par caractère :
– la classe Reader et ses sous-classes (FileReader, BufferedReader) pour la lecture.
– la classe Writer et ses sous-classes (FileWriter, BufferedWriter) pour l’´écriture.
L’écriture d’une chaine de caractères dans un fichier peut par exemple se faire à l’aide
de FileWriter de la manière suivante :
public static void main(String[] args) {
FileWriter fileOut = new FileWriter("NomDuFichier.txt");
fileOut.write("texte à écrire dans le fichier");
fileOut.close(); }
Exemple de l’écriture d’une chaine de caractères dans un fichier peut se
faire à l’aide de FileWriter de la manière suivante :

Placé cette code dans une classe


provoque une erreur de compilation
car on doit lancer une exception :
throws IOException
Au niveau de méthode
main pour que la
compilation soit
correcte .
❖ On ajoutant l’instruction manquer on trouve que la compilation est validée :

❖ On cherche le nom du fichier dans le pc :

Et le résultat trouvé est :


Flux standards :
Quand le programme est exécuté depuis une console, l’intéraction avec l’utilisateur se fait souvent via
l’environnement de ligne de commande. Pour y accéder, la plateforme Java supporte 3 flux standards : l’entrée
standard System.in, la sortie standard System.out, et la sortie d’erreur System.err. Ces flux sont des flux binaires
et non des flux de caractères, mais System.out et System.err sont définis comme des objets PrintStream, qui
utilise des objets internes de flux de caractères et possèdent par conséquent certaines méthodes de flux de
caractères. Par contre, System.in ne possède aucune caractéristique de flux de caractères, c’est pourquoi il faut
envelopper (ou wrapper) l’entrée standard dans un InputStreamReader pour récupérer des caractères. Si on veut de
plus que la lecture s’effectue de manière bufférisée (par séquence de caractères et non pas caractère par caractère)
on peut wrapper le flux dans un BufferedReader. Par exemple, la lecture d’une ligne de caractère (jusqu’`a un retour
chariot) par l’entrée standard se demande par :
BufferedReader cin = new BufferedReader(new InputStreamReader(System.in));
String s = cin.readLine();
un programme qui permet de calculer et afficher la fonction Factorielle (a! =b )
d'un entier entré au clavier
Merci pour votre attention
Mokaddem Dorsaf
LTIC2 /G1A

Vous aimerez peut-être aussi