69
1 Part 3 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

Embed Size (px)

Citation preview

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