-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path07-exceptions.Rmd
More file actions
58 lines (33 loc) · 2.67 KB
/
07-exceptions.Rmd
File metadata and controls
58 lines (33 loc) · 2.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# Les exceptions {#les-exceptions}
Définition
Exceptions et héritage :
La classe `Throwable` est la superclasse de toutes les erreurs et exceptions.
> Seuls les objets qui sont des instances de cette classe (ou de ses sous-classes) peuvent utiliser les déclarations `throws`.
Ses deux sous-classes sont `Error` et `Exception` (qui a elle-même une sous-classe `RuntimeException`).
Exemples de méthodes utiles : `getMessage()`, `getCause()` (plus précise), `getStackTrace()`, `printStackTrace()`
## Error
Une erreur, de la classe `Error`, est considérée comme grave et irrécupérable et induit l'arrêt du programme.
Ex : `OutOfMemoryError`
> Il existe une liste prédéfinie d'erreurs en Java : elles se terminent par `-Error` et ne sont pas cliquables.
Pour corriger une erreur, il faut modifier le code ou le paramétrage de la machine virtuelle java.
## RuntimeException
Une exception non contrôlée, de la classe `RuntimeException`, est une erreur de programmation détectée à l'exécution du code qui induit l'arrêt du programme.
Ex : `NullPointerException`, `ArrayIndexOutOfBoundsException`, `ArithmeticException`
> Il existe une liste prédéfinie d'exceptions non contrôlées en Java. Elles se terminent par `-Exception`. Elles sont cliquables, ce qui permet d'aller à la ligne de code concernée.
Pour corriger une exception non contrôlée, il faut modifier le code.
Il est possible de **personnaliser** une exception non contrôlée : on crée une classe qui hérite de `RuntimeException` :
`public class monExceptionNonControlee extends RuntimeException {}`
## Exception
Une exception, de la classe `Exception`, est une erreur d'utilisation. Elle offre la possibilité de ne pas arrêter le programme en étant contrôlée, *çàd* en ayant des alternatives définies en cas de situations prévues.
Ex : `SQLException`
> Il existe une liste prédéfinie d'exceptions contrôlées en Java. Elles se terminent par `-Exception`. Elles sont cliquables, ce qui permet d'aller à la ligne de code concernée.
Pour corriger une exception contrôlée, il faut proposer des alternatives (comme "saisir à nouveau") sur le modèle de **levée d'exception > traitement ou propagation > traitement**.
Ce qui correspond en Java :
`throw new exception` > `try...catch` ou `throws` > `try...catch`
> Il est possible de propager plusieurs fois une exception, mais il faut obligatoirement la traiter à un moment.
Il est possible de **personnaliser** une exception contrôlée : on crée une classe qui hérite de `Exception` :
`public class monExceptionControlee extends Exception {}`
## Créer une exception
## Lever une exception
## Propager une exception
## Traiter une exception