:: Enseignements :: Master :: M1 :: 2007-2008 :: Java Avancé ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) | Quelques notes pour le TD2 |
Chaines de caractères (non) mutables
En Java les chaînes de caractères sont représentées par deux
classes :
-
java.lang.String non mutable
-
java.lang.StringBuilder mutable
Effectuer une opération sur
String crée un nouvel objet
(non-mutable), tandis qu'une opération sur
StringBuilder
change l'état de l'objet courant (mutable).
L'interface CharSequence
L'interface
CharSequence
est implantée, entre autres, par les deux classes suivantes:
-
String, chaîne de caractères immutable
-
StringBuilder, buffer de caractères mutable
et auto-expansif
StringBuilder
Equivalent mutable de
String
, possédant un buffer de caractères qui s'agrandit tout
seul. Un
StringBuilder
est utilisé pour créer une chaîne de caractères qui sera
après rendue immutable par un
toString()
.
public class StringBuilderExample{
public static void main(String[] args){
StringBuilder builder = new StringBuilder();
for (String s : args){
builder.append (s).append(" ").append(s.length());
}
String result = builder.toString();
System.out.println(result);
}
}
Les méthodes
append()
sont chaînables.
Les exceptions
Les exceptions se produisent lorsque des situations
anormales surviennent durant l'exécution d'un programme
Java. Les exceptions sont donc de véritables objets créés
suite à la détection d'une anomalie dans le déroulement du
programme. Les exceptions peuvent et dans la plupart des
cas, doivent être interceptées.
Il n'est pas nécessaire de gérer les exceptions de la
classe
RuntimeException
. Toutes les méthodes susceptibles de générer une exception
doivent soit être comprises dans un bloc
try
, soit signaler au moyen de la commande
throws
cette particularité.
Les deux constructeurs qui nous intéressent sont:
-
public Exception(String message)
: Constructs a new exception with the specified
detail message. The cause is not initialized, and
may subsequently be initialized by a call to
Throwable.initCause(java.lang.Throwable)
.
message
- the detail message. The detail message is saved
for later retrieval by the
Throwable.getMessage()
method.
-
public Exception(String message,Throwable cause)
: Constructs a new exception with the specified
detail message and cause. Note that the detail
message associated with cause is not automatically
incorporated in this exception's detail message.
message
- the detail message (which is saved for later
retrieval by the
Throwable.getMessage()
method).
cause
- the cause (which is saved for later retrieval by
the
Throwable.getCause()
method). (A
null
value is permitted, and indicates that the cause is
nonexistent or unknown.)
Signalisation d'une exception
Dans la déclaration d'une méthode, le mot clé
throws
permet de signaler le ou les exceptions qu'elle sera
susceptible de lancer.
public int uneMethode() throws ClasseException{
...
}
La signalisation des exceptions est une obligation si :
-
une méthode contient une ou plusieurs instructions
throw
chargées de déclencher des exceptions,
-
la méthode ne dispose pas d'un mécanisme
d'interception suffisant pour les capturer toutes.
Dans le cas des exceptions de types
RuntimeException
, il n'est pas nécessaire de signaler le risque de
génération d'exception.
Génération d'une exception
La génération d'une exception s'effectue par l'instanciation
de la classe
Exception
ou de l'une de ses nombreuses dérivées et par l'utilisation
du mot clé
throw
.
//déclenchement d'une exception
throw new Exception();
//déclenchement d'une exception DataFormatException descendant de la classe Exception
throw new DataFormatException("Mauvais format de données!");
//propagation d'une exception catchée e
throw e
Récupération d'une exception
Afin de récupérer et traiter une exception, tout code
pouvant lever un exception
e
de type
typeException
doit se trouvé dans un bloc "try-catch":
try{
mon code pouvant lever une exception
}catch (typeException e){
code du traitement de l'exception
}
© Université de Marne-la-Vallée