Upload
yolande-cormier
View
106
Download
1
Embed Size (px)
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
Né
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