dans Best practice, Design & Architecture, java, POO

Les exceptions dans l’api java

Les exceptions existent dans l’api java depuis la toute 1ere version.

C’est une classe permettant de décrire le mécanisme de gestion d’erreur dans une application java.

Elles décrivent le comportement que doit adopter un programme lorsque une situation exceptionnelle (prévue ou imprévue) se produit.

Les exceptions sont généralement classées en 2 types :

  • Checked exception or compile-time exception
  • Unchecked exception or runtime  exception

Nous verrons dans ce premier article la définition des checked exception.

Checked Exception

Les  checked exceptions sont des exceptions détectées au moment de la compilation et que le développeur est obligé de  traiter de 2 façons:

  • Soit en l’entourant d’un block try catch
  • Soit en  délégant la gestion a la méthode appelante via le mot clé throw

Les checked exception sont d’un point de vue fonctionnelle des exceptions prévues par le développeur dans le cycle de vie du programmes, elles représentent des situations particulières (cas d’erreur) anticipées durant l’exécution du programme.

D’un point de vue technique toute exception qui n’a pas pour parent dans sa hiérarchie  la classe RuntimeException  et hérite de la classe Exception est une checked exception.

Sauf la classe RuntimeException elle-même qui hérite de la classe Exception mais n’est pas considérée comme checked mais plutot uncheched.

Ex: Je souhaite lever une exception dans mon application de traitement de virement bancaire si le le solde d’un compte bancaire est inférieur à un certain seuil.

Un virement bancaire ne devrait pas être effectué si le solde du compte est inférieur à ce seuil. Le developpeur pourra donc souhaiter dans ce cas particulier lever une checkedExcepton


public void makeTransfer(double amount) throws ThresholdException

{

if (sold< threshold)

throw new ThresholdException(sold);

// make transfert here

}

Ainsi la méthode appelante makeWire devra obligatoirement gérer cette exception


public aMethod()

{

try

{

makeTransfer(amount);

} catch(ThresholdException){

// Handle exception here

}

}

Le fait de déclarer mon exception comme suit la rend automatiquement Checked.


public class ThresholException extends Exception{

}

Une exception unchecked quant à elle,  a pour parent la classe RuntimeException.

De nombreux débats sont ouverts sur la toile concernant l’utilité des checked exceptions beaucoup arguent en disant qu’elles ne servent pas à grand chose et sont plutôt vues contraigantes par le développeur.

Personnellement je pense qu’elles ont leur utilité mais à utiliser avec parcimonie.

la suite au prochaine article

Voilà pour cette 1ere partie sur les checked exceptions.

Pour aller plus loin :

http://www.onjava.com/pub/a/onjava/2003/11/19/exceptions.html?page=2

 

 

 

 

 

Ecrire un Commentaire

Commenter