dans Astuce, Best practice, java

Mauvaise pratique dans la gestion des Exceptions

Je vous propose de revoir quelques mauvaises pratiques rencontrées lors de la gestion des exceptions.

1 – Logger et rejeter

Description

Il s’agit içi de logger et rejeter à la fois une exception. Le problème vient de la redondance d’information que peut entraîner ce genre de pratiquer, on finit par polluer les logs de messages  similaires et non pertinents.


try

{

//my code here

} catch (AnException e){

Logger.log(e);
throw e;

}

Solution

Soit logger l’exception soit la rejeter avec un message + l’exception d’origine mais pas les 2.

 

2 – Jeter une exception de type Exception

Description

Très mauvaise pratique, en procédant de la sorte , le code est appauvri et aucune information n’est véhiculé il est préférable de jeter des exceptions spécifiques à un problème. De plus vous obligez les clients utilisateurs de votre code à catcher la classe Exception qui est une autre mauvaise pratique décrite plus bas.

Certains pourraient être tenté de faire comme cela pour gagner du temps mais croyez moi le code n’en sera que plus complexe  à maintenir.


public void foo () throws Exception {

Solution

Si vous avez une méthode qui est un susceptible de lever une checked exception il est préférable de la lever clairement et si votre methode potentiellement lève plus d’une exception alors vous pouvez soit toutes les déclarer après la clause throws ou alors les réunir sous une super classes si elles cela a du sens, vous gagnerez ainsi en visibilité.

3 – Catcher la classe Exception

Description

Catcher la super class Exception est une très mauvaise pratique car vous traiter toutes les exceptions (checked et unchecked exception) de la même manière.

Techniquement cela veut dire que même les exceptions de type RuntimeException seront catchées en clair un NullPointerException sera traitée comme une  checked Exception ce qui est complètement absurde car on ne peut rétablir suite à un NPE.

De plus cette façon de procéder vous prive potentiellement de détecter les futures changements qui pourraient avoir lieu dans le code appelé.

En effet si on venait a modifier la méthode en question par exemple en y ajoutant une autre checked exception, du point de vue de votre code vous ne seriez pas du tout averti.


public void bar()

{

try

{

//code here

} catch (Exception e){}

}

Solution

Il impératif de ne catcher que l’exception ou les exceptions spécifique(s) jetée(s) par la méthode sous peine de tomber dans les problèmes évoqués  ci dessus.

 

 

 

Ecrire un Commentaire

Commenter

Webmentions

  • cialis pill

    […] walgreen cialis price […]

  • cialis 80 mg dosage

    […] buy viagra 100 mg online […]

  • cialis without prescription

    […] viagra sildenafil 50mg tablets […]

  • viagra 100mg price per pill

    […] canada pharmacy cialis […]

  • cialis 10 mg daily

    […] cialis generic […]

  • sildenafil citrate 50mg cost

    […] generic cialis for sale […]

  • cialis 40 mg generic

    […] sildenafil 50mg […]

  • maxifort sildenafil 100mg

    […] printable cialis coupon […]

  • kniha koupit online objednávku kamagra

    obecná expresní doprava kamagra

    kamagra bez lékařského předpisu a doručeno přes noc

  • discount rifaximin generic online cheapest

    purchase rifaximin generic efficacy

    how to order rifaximin price discount

  • order xifaxan uk suppliers

    online order xifaxan uk online

    order xifaxan generic xifaxan

  • buy avodart without perscription

    cheap avodart buy sydney

    online order avodart cheap fast shipping

  • canada staxyn without prescription

    ordering staxyn cost insurance

    purchase staxyn generic south africa

  • how to buy itraconazole purchase generic

    cheap itraconazole uk cheap purchase buy

    buy itraconazole online new zealand

  • get gabapentin canada drugs

    buy canadian gabapentin online

    buy cheap gabapentin generic efficacy

  • online order fildena uk buy cheap

    buy cheap fildena buy online canada

    buy fildena cheap uk

  • purchase flexeril cyclobenzaprine cheap united states

    get flexeril cyclobenzaprine generic switzerland

    cheap flexeril cyclobenzaprine online mastercard accepted

  • buying dutasteride generic medications

    cheapest buy dutasteride cost new zealand

    discount dutasteride cheap with fast shipping

  • buying androxal canada with no prescription

    ordering androxal no rx needed

    buy androxal with no prescription

  • buy cheap enclomiphene us prices

    enclomiphene cod saturday delivery

    how to order enclomiphene canadian pharmacy no prescription

  • kamagra pas cher

    y a-t-il quelque chose en vente libre comme kamagra

    medicament kamagra pharmacie nist prescrire

  • Korean ginseng for men

    […] best ginseng supplements for men […]

  • sildenafil tablets 100 mg

    […] 50 mg viagra cost […]

  • buy viagra 50 mg

    […] sildenafil 50 mg for sale […]

  • cialis online without prescription

    […] cialis cost […]

  • order clomid online

    […] buy clomid online […]

  • rybelsus 7 mg buy online

    […] buy rybelsus with prescription […]