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

Preview:

Citation preview

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 non remédiable

3

Gestion des exceptions

• Classes importantes

• Méthodes importantes

• Instructions try-catch

• Exemple de messages

4

Gestion des exceptions

• Propagation d’exception

• Instruction throw

• Clause finally

• Exemples

5

Classes importantes

• Las classe Throwable

• La classe Exception

• La classe Error

• La classe IOException

• La classe RuntimeException

6

Classes importantes

Throwable

Error Exception

IOException RuntimeException

7

java.lang.Thowable

• Le parent de toutes les classes exception et erreur

• Throwable (String message)

8

java.lang.Throwable

• fillInStackTrace(): méthode native

• printStackTrace(): méthode native

• getMessage(): retourne le message d’erreur

9

java.lang.Error

• Des problèmes sérieux

• L’application ne doit pas intercepter

• Error (String message)

10

java.lang.Exception

• Toutes les erreurs qu’on pourrait traiter

• Exception (String message)

11

java.lang.IOException

• Des problèmes de E/S

• IOException(): appel au constructeur de Exception

12

java.lang.RuntimeException

• Les erreurs de la virtual machine

• RuntimeException(): appel à Exception

13

try/catch

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

instructions } catch (exception-class1 var1) {

instructions}catch

14

try/catch

• Si aucune exception: bloc try à exécuter

• Chaque catch gère une exception particulière

• Exemple:

15

Propagation d’exception

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

• Propagation de contrôle

• Exemple:

16

Instruction throw

• throw exception-variable;

• Créée et saisie par le programmeur

• Exemple:

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}

18

Classes importantes

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

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

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

21

Gestion de fichiers

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

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

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

24

IOException

• Saisir les exceptions d’écriture de fichiers

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

• getMessage(): pour afficher un message

25

java.io.BufferedReader

• Mettre dans un buffer une entrée

• Constantes:

defaultCharBufferSize = 8192;// taille par défaut

defaultExpectedLineLength = 80;// taille ligne

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

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

28

Les flux d’octets

• Sous classes de InputStream ou OutputStream

• File Input Stream

• File Output Stream

• Accès directe

29

java.io.File

• Création de nouveau fichiers• Variables:

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

static private FileSystem fs // le SGF local

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

31

La classe File

• Pour copier, renommer des fichiers

• renameTo (File)

• delete ()

• mkdir ()

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

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 ()

34

Accès direct

• Ecrire ou lire de n’importe quel emplacement

• Classe: RandomAccessFile

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

36

Les flux de filtre

• Modification de l’information envoyée

• Buffered streams

• Data streams

37

Les flux bufférisés

• BufferedInputStreams

• BufferedOutputStream

38

java.io.BufferedInputStream

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

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

40

DataInputStreams

• DataInputStream (InputStream)

• readBoolean ()

• readByte ()

• readDouble ()

41

• readFloat ()

• readInt ()

• readLong ()

• readShort ()

DataInputStreams

42

• DataOutputStream (OutputStream)

• writeBoolean(boolean)

• writeBytes (String)

• writeDouble (double)

• writeInt (int)

DataOutputStreams

43

• writeFloat (float)

• writeInt (int)

• writeLong (long)

• writeShort (short)

DataOutputStreams

44

• Unicode ou ASCII

• Lecture de fichiers texte

• Ecriture de fichiers texte

Les flux de texte

45

• Lecture d’un flux de caractère

• FileReader (String nomFic)

• read ()

Lecture de fichier

46

• read (char (), int, int)

• Exemple:

Lecture de fichier

47

• Ecriture d’un flux de caractère

• FileWriter (String nomFic)

• write (int)

• write (String, int, int)

• Exemple:

Ecriture de fichier

48

• Enregistrer le type de objets

• Enregistrer les données de l’objets

• ObjectOutputStream (FileOutputStream)

• writeObject (Object)

Flux d’objet (sérialisation)

49

• ObjectInputStream (FileInputStream)

• readObject (Object)

• Implanter la classe Serializable

• Exemple:

Flux d’objet (sérialisation)

50

Threads

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

51

Création de thread

• Effectuer plusieurs tâches

• Traitement parallèle

• Chaque thread effectue une tâche

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

53

Création de thread

• On commence par invoquer la méthode start

Concurrent flow

task1 task2 task3

54

Création des threads

• Priorité des threads: 1 à 10

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

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

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

56

Problème avec threads

• Partage de données

Compte

+ 250 - 250

Thread1 Thread2

57

Synchronisation

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

• Utiliser le mot clé synchronised

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

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

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

60

Groupe de threads

• Grouper les threads

• public ThreadGroup (String nomGroupe)

• public Thread (ThreadGroup, String)

61

Comparaison applet/application

• Exemple application

• Exemple applet

• Sécurité applet

62

Sécurité

• Divulgation d’informations

• Indisponibilité des ressources

• Atteinte à l’intégrité

• Nuisance

63

Securité d’applet

Alice

Charlie

Bob

Alice’s server

Charlie’s server

64

Securité

WebBrowser

J ava VirtualMachine

Security Manager

Class loader Byte-code

verifier

Internet

Applet classesHTML

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

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

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

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

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