readme.md 2.19 KB
Newer Older
Colin DAMON's avatar
Colin DAMON committed
1
2
3
4
5
6
7
8
# Java exceptions

Code & coffee sur les exceptions (sujet choisi par le chat)

-   **Auteurs** : Anthony REY et Colin DAMON
-   **Date** : 16/12/2020
-   **Langage** : Java
-   **Niveau** : Débutant
Colin DAMON's avatar
Colin DAMON committed
9
-   **Replay** : [Code & Coffee III - Anthony & Colin](https://www.youtube.com/watch?v=Ma4lHPlusoU)
Colin DAMON's avatar
Colin DAMON committed
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

La prise en compte d'une exception doit être fait au plus proche de sa création. Il faut cependant être dans une couche permettant ce traitement : une exception peut donc traverser plusieurs "layers".

## Exceptions en Java

```plantuml
Throwable <|-- Exception
Throwable <|-- Error
Exception <|-- RuntimeException
```

## Liens dans le chat

-   [JSR](https://fr.wikipedia.org/wiki/Java_Specification_Requests)
-   [Exceptions internationalisées](https://blog.ippon.fr/2020/07/22/exceptions-internationalisees/)
-   [Des objets, pas des data classes](https://blog.ippon.fr/2020/04/01/des-objets-pas-des-data-classes/)
-   [Hexagonal architecture](https://alistair.cockburn.us/hexagonal-architecture/)

## Checked Exceptions

Les checked exceptions doivent être explicitement `throw` ou `catch` ce qui a tendance à "bloquer" les mises à jour d'API. Si cela semblait être une bonne idée pour obliger le traitement des erreurs, dans les faits elles ne sont pas mieux traitées.

Les checked exceptions sont les héritières directes de :

-   Throwable
-   Exception
    -   IOException

## Unchecked Exceptions

Les unchecked exceptions n'ont pas besoin d'être explicitement `throw` ou `catch`. Elles remontent directement jusqu'à l'endroit où elles sont prises en compte. En dernier recours elles sont traitées par la JVM qui va simplement les tracer. Cependant, beaucoup de FrameWorks (dont Spring) viennent avec un outillage facilitant le traitement de ces fin exceptionnelles.

Les unchecked exceptions sont les héritières directes de :

-   Error
-   RuntimeException
    -   IllegalArgumentException

## Créer votre stack d'exceptions

-   Prendre le temp d'outiller les exceptions : cela en vaut la peine ;
-   Faire des exceptions spécifiques aux erreurs ;
-   Ajouter une information pour connaître le type d'erreur a remonter aux utilisateurs ;
-   Wrapper les exceptions "exotiques" dans des exceptions custom.