PDF Archive

Easily share your PDF documents with your contacts, on the Web and Social Networks.

Send a file File manager PDF Toolbox Search Help Contact



3 BasesJavaSuite .pdf



Original filename: 3-BasesJavaSuite.pdf
Title: Microsoft PowerPoint - 3-BasesJavaSuite.pptx
Author: Christine

This PDF 1.5 document has been generated by PScript5.dll Version 5.2.2 / Acrobat Distiller 9.5.5 (Windows), and has been sent on pdf-archive.com on 05/04/2017 at 14:44, from IP address 80.12.x.x. The current document download page has been viewed 165 times.
File size: 215 KB (18 pages).
Privacy: public file




Download original PDF file









Document preview


http://docs.oracle.com/javase/8/docs/api/

LES EXCEPTIONS
• Les anomalies sont gérées en Java à l’aide des

5

exceptions  mécanisme de gestion d'exception
Exemples d'exceptions: donnée incorrecte, rencontre d'une
fin de fichier prématurée, indice de tableau invalide, …

LES EXCEPTIONS
Voir suite chapitre 9

• Une exception est un événement inattendu lors de
l’exécution d’un programme

Sa détection est dissociée de son traitement
Avantage d'une séparation nette du traitement d’anomalies
(gestionnaire d'exception) et du reste du code
 Clarté
 Économie de code

63

JAVA - © Christine Bonnet

64

Erreurs, Exceptions contrôlées, Exceptions
non contrôlées
Toutes les erreurs et les exceptions sont des instances
dérivées de la classe Throwable (package java.lang)
Throwable

Error

Erreurs internes à
Java
(chargement d’une
classe impossible,
…)
Ne pas les gérer

65

JAVA - © Christine Bonnet

MÉCANISME
Une méthode lance (ou lève) une exception
 un objet exception de la classe d'exceptions concernée
est créé
Le gestionnaire d’exception correspondant (s'il existe) capture
l'exception

Exception

• Exceptions standard
RuntimeException
explicites (lecture après
la fin de fichier, URL mal
formaté, …) OU
Erreur de programmation
• Exceptions créées
(division par 0, …)
A gérer obligatoirement
Choix / gestion
(gestionnaire ou propagation)

JAVA - © Christine Bonnet

66

JAVA - © Christine Bonnet

CAPTURER ET GÉRER UNE EXCEPTION

EXEMPLE 1

e objet de la classe
FileNotFoundException


try {

try { …

// code pouvant générer une exception

appel d'une méthode

} catch (FileNotFoundException e) {

susceptible de lancer

}

System.err.println("FileNotFoundException:

une exception

catch (TypeException1 e) {

" + e.getMessage());

// traitement de TypeException1
}
catch (TypeException2|TypeException3 e)
// traitement de TypeException2/3

gestion d’une exception

} catch (IOException e) {

de la classe TypeException1

System.err.println("Capture IOException: "

gestion d’une exception

+ e.getMessage()); }

de la classe TypeException2/3

String getMessage(): méthode de la classe Throwable,

}

renvoie le texte du message d'erreur

finally {
// bloc facultatif, toujours exécuté,

traitement final

Exception

// quel que soit le résultat de try
}
FileNotFoundException

Déclenchement d'une exception  examen des gestionnaires dans
l'ordre de leur écriture
67

JAVA - © Christine Bonnet

EXEMPLE 2

68

IOException

JAVA - © Christine Bonnet

EXEMPLE 2 - suite

Exception

Exception

public class ExempleException {
public static void main(String[] args){

MonException

MonException

try {
System.out.println("-------Lancement d'une exception------------");

public class MonException extends Exception {

throw new MonException("je suis l'exception levée dans le main");
}

public MonException(String texteDeException) {

catch (MonException e){

super(texteDeException);

System.out.println("je suis dans le gestionnaire et "+e.getMessage());
}

}
}

System.out.println("-----Après la gestion de l'exception----------");
}
}

-------Lancement d'une exception-----------je suis dans le gestionnaire et je suis l'exception levée dans le main
-----Après la gestion de l'exception----------

69

JAVA - © Christine Bonnet

70

JAVA - © Christine Bonnet

INFORMATIONS SUR L'EXCEPTION

EXEMPLE 3
public void maMethode () {
try {
... // on suppose qu'on utilise la méthode getSomething();
}
catch (IndexOutOfBoundsException e) {
System.out.println("Capture IndexOutOfBoundsException ");
}
catch (Exception e) { // gestionnaire à placer en dernier
System.out.println(" Capture Exception ");
}
finally {
System.out.println(" Pas d’autres exceptions ");
}
System.out.println("Goodbye");
}

Quelques méthodes de la classe Throwable
– String getMessage(): renvoie le texte du message
d'erreur de l'objet Throwable
– String toString(): renvoie une courte description
de l'objet Throwable; permet d'afficher cet objet
comme étant une chaîne de caractères
Exemple: System.out.println("Exception: " +e);
résultat  java.lang.ArrayIndexOutOfBoundsException: 0

– void printStackTrace(): imprime l'objet
Throwable ainsi que la trace de la pile des appels sur
le flux d'erreur standard (System.err)

Si getSomething() lance une exception IllegalArgumentException:
Capture Exception
Pas d’autres exceptions

Exemple: e.printStackTrace(System.err);
résultat  java.lang.ArrayIndexOutOfBoundsException: 0 at
Epargne.main(Epargne.java:14)

Goodbye

71

JAVA - © Christine Bonnet

72

PROPAGATION D'UNE EXCEPTION
throws NomClasseException
• Propagation d’une exception à la méthode appelante
public int maMethode() throws Exception1 {
// code pouvant lancer une exception de
// type Exception1

JAVA - © Christine Bonnet

PROPAGATION – throws - suite
void maMéthode() {

try
void openConnection()

{

throws IOException{

openConnection();

}
}
public URL changeURL(URL ancienURL)throws MalformedURLException {
return new URL("http://www.oracle.com");
}

sendRequest();



La méthode ne capture pas l’exception localement

void sendRequest()
throws IOException{



}

write(header);

}

finally {

Elle est transférée à la méthode qui a appelé changeURL()



catch (IOException e) {

write(body);



erreur d'E/S}

}


SUITE CHAPITRE 9
73

JAVA - © Christine Bonnet

74

JAVA - © Christine Bonnet

STREAM

Package java.io

• Un stream (flot) représente un canal de

6

communication ( écran, fichier, pipe, …)

• La classe System possède trois canaux d’E/S

ENTRÉES – SORTIES CLAVIER/ÉCRAN

– in

saisie de caractères

– out

affichage sur écran

– err

affichage des erreurs

• Lecture ou écriture de caractères, d’objets Java, de
sons, d’images, …

• Les méthodes sur les flots peuvent renvoyer
IOException

75

JAVA - © Christine Bonnet

76

SORTIE ÉCRAN EN MODE TEXTE

JAVA - © Christine Bonnet

EXEMPLE
public class TestAffichage {

• System.out.print(...)

public static void main(String[] args) {

System.out.println(...) // avec saut de ligne

int x = 3;

System.out.printf(...) // avec formatage

char c = 't';

System.out.format(...)

float z = -2.45E-3F;

(classe PrintStream )

String ch = "essai";
// affichage
System.out.println("Affichage");

OU

System.out.println("x = " +x +" et z = " +z);
System.out.println("\n c = " +c +" et ch =" +ch);

PrintWriter pw = new PrintWriter(System.out,true);
pw.println(...) // avec import de java.io.PrintWriter
Permet en plus de créer des fichiers texte
77

JAVA - © Christine Bonnet

}
}
78

JAVA - © Christine Bonnet

SORTIE ÉCRAN AVEC FORMATAGE

ENTRÉE CLAVIER EN MODE TEXTE

System.out.printf(...)
System.out.format(...)

• Package java.io et java.util

public PrintStream format|printf(String format,
Object... args)

• Les caractères nécessitent un traitement particulier en

EXEMPLE :
System.out.printf("La valeur de la variable de type flottant est %.3f%n"

Java car ils sont codés sur deux octets (Unicode)
 L'entrée standard System.in ne peut pas être
utilisée (un seul octet lu à la fois)

+ "la valeur de la variable entière est %d%n"
+ "et la valeur de la chaîne de caractères est %s%n"
, 1.5845f, 3, "123");
La valeur de la variable de type flottant est 1,584
la valeur de la variable entière est 3

• Utilisation de la classe java.io.BufferedReader
(lecture avec zone tampon) ou de la classe
java.util.Scanner (lecture avec utilisation
d'expressions régulières comme délimiteurs)

et la valeur de la chaîne de caractères est 123
79

JAVA - © Christine Bonnet

Utilisation de la classe BufferedReader

80

JAVA - © Christine Bonnet

Conversion grâce aux méthodes des
classes "enveloppes" – Wrapper classes

• Déclaration d'un buffer d'entrée
• Saisie d'une chaîne par la méthode readLine()
• [ Conversion de la chaîne saisie en entier, en byte,

• Pour permettre l’utilisation de valeurs des types

• [ Gestion des exceptions ]

• Pour chacun des types de base il existe une

en caractère ou en réel  méthodes parse ou
valueOf ]

import java.io…;
public class TestApplication1 {
public static void main(String[] args) {
BufferedReader in = new BufferedReader (new
InputStreamReader(System.in));
String s;
try {
while((s = in.readLine()).length() != 0)
System.out.println(s);
} catch(IOException e) {…}
}}
81

JAVA - © Christine Bonnet

de base en tant qu’objet on "encapsule » la valeur
dans un objet à l’aide d’une classe "enveloppe"

classe enveloppe dont le nom correspond au nom
du type de base avec une Majuscule
// classe abstraite

82

JAVA - © Christine Bonnet

EXEMPLES
import java.io…;
public class TestApplication1 {
public static void main(String[] args) {
System.out.println("Entrez la valeur de ...");

EXEMPLES
Méthodes de la classe Double:

BufferedReader in = new BufferedReader (new
InputStreamReader(System.in));

public static Double valueOf(String s) throws
NumberFormatException: renvoie un objet de type
Double, initialisé à une valeur correspondant à la chaîne s

try {
String s;
Double d;
s = in.readLine();
d = Double.valueOf(s);
System.out.println("La valeur entree est: " + d);

ou public static double parseDouble(String s)
throws NumberFormatException

} catch(IOException e) {…
} catch (NumberFormatException e) {…
}
}
}
83

JAVA - © Christine Bonnet

import java.io…;
public class TestSaisie {
public static void main(String[] args) throws IOException,
NumberFormatException {
BufferedReader rep = new BufferedReader (new
InputStreamReader(System.in));
System.out.println("Entrez une chaine: ");
String saisie = rep.readLine();
System.out.println("Voici la chaine saisie: " +saisie);
System.out.println("Entrez un entier: ");
int i = Integer.parseInt(rep.readLine());
System.out.println("L'entier = " +i);
// Pour un réel
// float f = Float.parseFloat(rep.readLine());
// Pour un caractère
// String valeur = rep.readLine();
// char c = valeur.charAt(0);
}
}
85

JAVA - © Christine Bonnet

84

JAVA - © Christine Bonnet

E/S et Exceptions – Exemple 1
import java.io…;
public class TestSaisieExcep {
public static void main(String[] args) {
int i;
System.out.println("Entrez un entier: ");
try {
BufferedReader rep = new BufferedReader (new
InputStreamReader(System.in));
i = Integer.parseInt(rep.readLine());
System.out.println("L'entier vaut " +i);
} catch(IOException e) {
System.out.println("ERREUR DE SAISIE\n\n");
} catch(NumberFormatException e) {
System.out.println("ERREUR DE TYPE\n\n");
}
}
}
86

JAVA - © Christine Bonnet

E/S et Exceptions – Exemple 2

ENTRÉE CLAVIER EN MODE TEXTE -suite
• Package java.util
• Utilisation de la classe Scanner : lecture avec
utilisation d'expressions régulières comme
délimiteurs



Délimiteur par défaut: java WhiteSpace i.e. espace,
tabulation, retour à la ligne
Conversion en utilisant des méthodes next
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
double d = sc.nextDouble();

String s = sc.nextLine();

87

JAVA - © Christine Bonnet

import java.util.InputMismatchException;
import java.util.Scanner;
public class TestSaisieExcep2 {
public static void main(String[] args) {
int i;
System.out.println("Entrez un entier: ");
try {
Scanner rep = new Scanner(System.in);
i = rep.nextInt();
System.out.println("L'entier vaut " +i);
} catch(InputMismatchException e) {
System.out.println("ERREUR DE TYPE\n\n");
}
}
}

88

JAVA - © Christine Bonnet

7
LES CHAÎNES DE CARACTÈRES

Exercices

89

JAVA - © Christine Bonnet

90

JAVA - © Christine Bonnet

LES CHAÎNES DE CARACTÈRES

Si la chaîne de caractères doit être
modifiée, ne pas utiliser la classe String

• Pas de type chaîne prédéfini
 classe String de chaînes non modifiables

public class StringNonModifiable {
public static void main(String[] args) {

 classe StringBuilder ou StringBuffer de
chaînes modifiables du package java.lang

String résultat = "0";

Rappel : le package java.lang est toujours importé par
défaut

System.out.println("Adresse de la chaîne résultat "
+System.identityHashCode(résultat));
for (int i = 1; i < 3; i++){

• Un String est un objet

résultat = résultat + i;
System.out.println("Adresse de la chaîne résultat "
+System.identityHashCode(résultat));

• Les objets String sont en lecture seule  leurs valeurs ne
peuvent pas changer après création
Pour changer une chaîne de la classe String, il faut en créer
une nouvelle  utilisation de la classe StringBuilder ou
StringBuffer

}

Adresse de la chaîne résultat 366712642

}

Adresse de la chaîne résultat 1829164700

}

Adresse de la chaîne résultat 2018699554
 3 objets créés!!

91

JAVA - © Christine Bonnet

Si la chaîne de caractères doit être modifiée,
utiliser la classe StringBuilder ou StringBuffer
public class StringBuilderModifiable {
public static void main(String[] args) {
StringBuilder résultat = new StringBuilder("0");
System.out.println("Adresse de la chaîne résultat "
+System.identityHashCode(résultat));
for (int i = 1; i < 3; i++){
résultat = résultat.append(i);
System.out.println("Adresse de la chaîne résultat "
+System.identityHashCode(résultat));
}
Adresse de la chaîne résultat 366712642

}

Adresse de la chaîne résultat 366712642

}

Adresse de la chaîne résultat 366712642
93

JAVA - © Christine Bonnet

92

JAVA - © Christine Bonnet

Classe StringBuilder
• Constructeurs
public StringBuilder() : création d'une chaîne vide de
capacité initiale 16 caractères
public StringBuilder(int capacity) : création d'une
chaîne vide de "capacity" caractères
public StringBuilder(String str) : création d'une
chaîne de valeur str


• Méthodes
public StringBuilder append(String str) ajoute la
chaîne str à la séquence de caractères
public String toString()
renvoie une chaîne de type String correspondant à la
séquence de caractères

94

JAVA - © Christine Bonnet

Classe String
• Création d’un String

• Extraction d’une sous-chaîne

String categorie = "Action";

public String substring(int indiceDebut,int indiceFin);

String nomEmp = prenom + " " + nom;

// extraction de indiceDebut à indiceFin –1

String nomEmp2 = new String("Joe Smith");

• Concaténation + ou public

String str = "Comedie";
String sub = str.substring(2,4); // me

String concat(String

str)



int age = p.getAge();
System.out.println("Age = " + age);

Extraire un caractère à partir d’un indice
public char charAt(int indice); // indice débute à 0
String str = "Comedie";
char c = str.charAt(1); //

String name = "Sam ".concat("Wong");

• Longueur

"o"

public int length();

String str = "Comedie";
int len = str.length();
95

JAVA - © Christine Bonnet

96



• Changer la casse

JAVA - © Christine Bonnet

Comparaison de chaînes
Égalité :

public String toUpperCase();
public String toLowerCase();

equals(); // tient compte de la casse

String caps = str.toUpperCase();

equalsIgnoreCase(); // ignore la casse
String passwd = connection.getPassword();
if (passwd.equals("fgHPUw"))… // Casse importante

• Suppression des espaces en début et fin
public String trim();

Comparaison :

String noSpaces = str.trim();

public int compareTo(String anotherString)



indice d’une sous-chaîne

// comparaison lexicale int i = s1.compareTo(s2);

public int indexOf (String str);
public int lastIndexOf(String str);
int indice =

0 : s1 identique à s2
//indice dernière occurrence

< 0 : s1 < s2 (ordre lexicographique)

> 0 : s1 > s2

str.indexOf("me"); //2

Ne pas utiliser ==

(cet opérateur renvoie vrai si deux références
pointent sur le même objet)

97

JAVA - © Christine Bonnet

98

JAVA - © Christine Bonnet


Related documents


PDF Document 2 basesjavadebut
PDF Document lista6
PDF Document 1z0 808 latest dumps free download from lead2pass 161 170
PDF Document 4 progobjjava
PDF Document 3 basesjavasuite
PDF Document pract


Related keywords