1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut...

69
1 Part 3 3

Transcript of 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut...

Page 1: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

1

Part3 3

Page 2: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

2

Exception

• Générée par un problème de programme

• Objet définissant une erreur

• Peut être saisie et traitée par un programme

• Une erreur: situation non remédiable

Page 3: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

3

Gestion des exceptions

• Classes importantes

• Méthodes importantes

• Instructions try-catch

• Exemple de messages

Page 4: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

4

Gestion des exceptions

• Propagation d’exception

• Instruction throw

• Clause finally

• Exemples

Page 5: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

5

Classes importantes

• Las classe Throwable

• La classe Exception

• La classe Error

• La classe IOException

• La classe RuntimeException

Page 6: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

6

Classes importantes

Throwable

Error Exception

IOException RuntimeException

Page 7: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

7

java.lang.Thowable

• Le parent de toutes les classes exception et erreur

• Throwable (String message)

Page 8: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

8

java.lang.Throwable

• fillInStackTrace(): méthode native

• printStackTrace(): méthode native

• getMessage(): retourne le message d’erreur

Page 9: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

9

java.lang.Error

• Des problèmes sérieux

• L’application ne doit pas intercepter

• Error (String message)

Page 10: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

10

java.lang.Exception

• Toutes les erreurs qu’on pourrait traiter

• Exception (String message)

Page 11: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

11

java.lang.IOException

• Des problèmes de E/S

• IOException(): appel au constructeur de Exception

Page 12: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

12

java.lang.RuntimeException

• Les erreurs de la virtual machine

• RuntimeException(): appel à Exception

Page 13: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

13

try/catch

• Bloc try: il doit surmonter une exception• Bloc catch: Comment traiter l’exception• try {

instructions } catch (exception-class1 var1) {

instructions}catch

Page 14: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

14

try/catch

• Si aucune exception: bloc try à exécuter

• Chaque catch gère une exception particulière

• Exemple:

Page 15: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

15

Propagation d’exception

• Exception: contrôle passé à la méthode appelante

• Propagation de contrôle

• Exemple:

Page 16: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

16

Instruction throw

• throw exception-variable;

• Créée et saisie par le programmeur

• Exemple:

Page 17: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

17

Clause finally

• Clause optionnelle• Une partie à exécuter peu importe la sortie du try• try {instructions } catch (exception-class1 var1) {instructions

}catch………} finally { instructions}

Page 18: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

18

Classes importantes

• La classe ClassCastException• La classe SecurityException• La classe EOFException• La classe FileNotFoundException• La classe SocketException

Page 19: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

19

InputStream

FileInputStream

PipedInput Stream

FilterInputStream

SequenceInputStream

StringBufferInputStream

ObjectInputSt ream

CheckedInputStream

DigestInputStream

InflaterInputStream

LineNumberInputStream

PushbackInputSteam

DataInputSt ream

GZIPInputStream

ZipInputStream

JarInputStream

RandomAccessFile

OutputS treamObjectOutput

ByteArr ayOutputStream

FileOutputStream

FilterOutputS tream

PipedO utputStream

ObjectOutputStream

CheckedOutputStream

DigestOutputS tream

DeflaterO utputStream

PrintStream DataOutput

GZIPOutputS tream

ZipO utputStream

BufferedOutputStream

BufferedInputStream

ByteArrayInputStream

Object Input

DataInput

DataOutput

JarO utputStream extends

implements

Zoo

Page 20: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

20

W riter

C harA rrayW riter

F ilterWriter O utputS treamW riter

P ipedW riter PrintW riter S tringWriter

R eader

C harA rrayR eader

FilterReader InputStreamR eader

P ipedR eader StringReader

PushbackR eader

FileR eader

FileW riter

B ufferedW riter

B ufferedR eader

LineN um berR eader

Zoo

Page 21: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

21

Gestion de fichiers

• Classes abstraites• Bytes stream• Filtering streams• Character streams• Object stream (Sérialization)• Fichiers et filtres de noms de fichiers

Page 22: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

22

java.io.InputStream

• Lire des entrées

• Méthodes:

read(byte b [ ], int off, int len):

Lire un buffer et le placer dans le tableau

Page 23: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

23

java.io.OutputStream

• Effectuer des opérations de sortie

• Classe abstraite

• Méthodes:

close (): fermer output stream, libérer ressources

write(byte b [ ]): écrire dans le output stream

Page 24: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

24

IOException

• Saisir les exceptions d’écriture de fichiers

• Une entrée/sortie s’est mal déroulée

• getMessage(): pour afficher un message

Page 25: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

25

java.io.BufferedReader

• Mettre dans un buffer une entrée

• Constantes:

defaultCharBufferSize = 8192;// taille par défaut

defaultExpectedLineLength = 80;// taille ligne

Page 26: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

26

java.io.BufferedReader

• Méthodes:

BufferedReader(Reader in): créer nouveau buffer

fill(): remplir le buffer

readLine(): lire une ligne de texte

close(): fermer le stream

Page 27: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

27

java.io.InputStreamReader

• Transformer des octets en chaînes de caractères• Constantes:

defaultByteBufferSize = 8192;// taille par défaut• Méthodes:

InputStreamReader(InputStream in) // par défaut

convertInto(char cbuf[ ], int off, int end) // conversion

Page 28: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

28

Les flux d’octets

• Sous classes de InputStream ou OutputStream

• File Input Stream

• File Output Stream

• Accès directe

Page 29: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

29

java.io.File

• Création de nouveau fichiers• Variables:

private String path; // chemin d ’accès

static private FileSystem fs // le SGF local

Page 30: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

30

java.io.File

• Méthodes:

public File(String pathname) // nouveau fichier

public boolean canWrite() // écriture

public String getAbsolutePath() // chemin

public String getName() // nom du fichier

Page 31: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

31

La classe File

• Pour copier, renommer des fichiers

• renameTo (File)

• delete ()

• mkdir ()

Page 32: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

32

FileInputStream

• Constructeur: FileInputStream(String nomFic)• Pour lire méthode read () (bit par bit)• read (byte [ ], int, int)• close (): fermer le stream• Exception: java.io.FileNotFoundException

Page 33: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

33

FileOutputStream

• Constructeur: FileOutputStream (String nomFic)• Constructeur: FileOutputStream (Sting, boolean)• Pour écrire: write (int)• Pour écrire plusieurs octets: write (byte [ ], int, int)• Pour fermer le stream: close ()

Page 34: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

34

Accès direct

• Ecrire ou lire de n’importe quel emplacement

• Classe: RandomAccessFile

Page 35: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

35

java.io.RandomAccessFile

• RandomAccessFile (String nameFic, String mode)

• getFilePointer(): position courante pointeur fichier

• seek (long pos): fixe la position du pointeur pos

• length (): renvoie la longueur du fichier en octets

Page 36: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

36

Les flux de filtre

• Modification de l’information envoyée

• Buffered streams

• Data streams

Page 37: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

37

Les flux bufférisés

• BufferedInputStreams

• BufferedOutputStream

Page 38: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

38

java.io.BufferedInputStream

• BufferedInputStream (InputStream)• BufferedInputStream (InputStream, int)• Lecture: read ()• Lecture: read (byte [ ], int, int)• Fermeture: close ()

Page 39: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

39

Les flux de données

• Pas de bytes caractères

• Data output ou data input streams

• boolean, byte, double, float, int, long et short

Page 40: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

40

DataInputStreams

• DataInputStream (InputStream)

• readBoolean ()

• readByte ()

• readDouble ()

Page 41: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

41

• readFloat ()

• readInt ()

• readLong ()

• readShort ()

DataInputStreams

Page 42: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

42

• DataOutputStream (OutputStream)

• writeBoolean(boolean)

• writeBytes (String)

• writeDouble (double)

• writeInt (int)

DataOutputStreams

Page 43: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

43

• writeFloat (float)

• writeInt (int)

• writeLong (long)

• writeShort (short)

DataOutputStreams

Page 44: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

44

• Unicode ou ASCII

• Lecture de fichiers texte

• Ecriture de fichiers texte

Les flux de texte

Page 45: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

45

• Lecture d’un flux de caractère

• FileReader (String nomFic)

• read ()

Lecture de fichier

Page 46: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

46

• read (char (), int, int)

• Exemple:

Lecture de fichier

Page 47: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

47

• Ecriture d’un flux de caractère

• FileWriter (String nomFic)

• write (int)

• write (String, int, int)

• Exemple:

Ecriture de fichier

Page 48: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

48

• Enregistrer le type de objets

• Enregistrer les données de l’objets

• ObjectOutputStream (FileOutputStream)

• writeObject (Object)

Flux d’objet (sérialisation)

Page 49: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

49

• ObjectInputStream (FileInputStream)

• readObject (Object)

• Implanter la classe Serializable

• Exemple:

Flux d’objet (sérialisation)

Page 50: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

50

Threads

• Création de thread• Problèmes• Synchronisation• Contrôle de thread• Exemples

Page 51: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

51

Création de thread

• Effectuer plusieurs tâches

• Traitement parallèle

• Chaque thread effectue une tâche

Page 52: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

52

• Héritage de la classe Thread

• Possibilité de surcharge de la méthode run

• Créer une nouvelle classes

• Implanter l’interface Runnable

Création de thread

Page 53: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

53

Création de thread

• On commence par invoquer la méthode start

Concurrent flow

task1 task2 task3

Page 54: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

54

Création des threads

• Priorité des threads: 1 à 10

• Les méthodes start () et run ()

• Les méthodes wait () et notify ()

Page 55: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

55

Priorité des threads

Priority 10

Priority 9

Priority 8

Priority 7

Priority 6

Priority 5

Priority 4

Priority 3

Priority 2

Priority 1

A B

C

D E F

G

H I

J K

Page 56: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

56

Problème avec threads

• Partage de données

Compte

+ 250 - 250

Thread1 Thread2

Page 57: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

57

Synchronisation

• Un seul thread accède à la donnée

• Utiliser le mot clé synchronised

• Pas d’exécution de méthode synchronisée

Page 58: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

58

Contrôle de threads

• suspend (), resume (), sleep ()• suspend (): suspendre le thread• resume (): reprendre le thread• sleep (long milliseconds): suspendre le thread pour un temps

Page 59: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

59

États d’un thread

Prêt

S’exécute

Mort

En suspensEn hibernation BloquéEn attente

resumeFin du délai d’attente stop complétion

wait

notifynotifyall

Complétion d’E/S

sleep suspend

Entrées/Sorties

start

Allocationdu processeur yield

Page 60: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

60

Groupe de threads

• Grouper les threads

• public ThreadGroup (String nomGroupe)

• public Thread (ThreadGroup, String)

Page 61: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

61

Comparaison applet/application

• Exemple application

• Exemple applet

• Sécurité applet

Page 62: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

62

Sécurité

• Divulgation d’informations

• Indisponibilité des ressources

• Atteinte à l’intégrité

• Nuisance

Page 63: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

63

Securité d’applet

Alice

Charlie

Bob

Alice’s server

Charlie’s server

Page 64: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

64

Securité

WebBrowser

J ava VirtualMachine

Security Manager

Class loader Byte-code

verifier

Internet

Applet classesHTML

Page 65: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

65

• Java est fortement typé

• Java n’offre pas de notion de pointeur

• Protection de l’accès: variables, méthodes et classes

Sécurité langage

Page 66: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

66

• Interdire la redéfinition de méthodes sensibles (mot- clé final)

• Java interdit l’héritage multiple

• Java gère la désallocation de la mémoire

Sécurité langage

Page 67: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

67

Sécurité bytecode

• Vérifier toutes les information identifiant une classe• Existence des classes et des types utilisés• Pas de redéfinition des méthodes finales• Un contrôle sur le type est effectué• La taille et le format des types

Page 68: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

68

Sécurité du chargement

• Les classes sont chargées dynamiquement

• Distinguer les classes importées des classes locales

• Impossible d’écraser des classes locales

• Un seul chargeur de classes par navigateur

Page 69: 1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.

69

Gestionnaire de sécurité

• Contrôler les droits d ’accès

• Un seul gestionnaire de sécurité par navigateur

• Non autorisée à exécuter des programmes sur le client