----- Original Message -----
From: "Didier Bretin" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Friday, April 26, 2002 12:08 PM
Subject: conception de classes et utilisation des exceptions


> Bonjour � vous,
>
>   Je me pose une petite question existancielle :o). Je suis en train de
faire un package
> et pour g�rer les erreurs je me disais la chose suivante:
> - pour les m�thodes 'private' de ma classe qui sont appel�es par des
fonctions internes �
> ma classe, je vais utiliser un code de retour qui indique les erreurs qui
ont pu survenir.
> J'utilise soit un bool�en, soit un entier.
> - pour les m�thodes 'public' je n'utilise pas de valeur de retour pour
indiquer
> les erreurs, je vais utiliser des exceptions qui sont en rapport avec ma
classe.
>
> Que pensez-vous de cette approche ? Est-elle 'logique' avec une conception
Java ?
> Me trompe-je ? :o)

Ben...heu...peut-�tre...
Les exceptions ne sont pas, selon moi, l� pour renvoyer un r�sultat par une
voie sp�ciale (ce que semble sugg�rer cette distinction entre les m�thodes
private et les autres). Pour moi, les exceptions sont plut�t l� pour
signaler qu'un traitement a pris fin pour une raison inattendue. Et cette
fin inattendue peut avoir lieu aussi bien dans une m�thode private que dans
une autre. Je m'explique : si dans une m�thode private tu essayes d'acc�der
� un fichier qui n'existe pas, tu recevras une NoSuchFileException. Qu'en
faire ? Selon ta logique, tu l'attrapes et tu renvoies une valeur false, ce
qui implique que tu as perdu de l'information (le type d'exception qui est
survenue notamment) alors que si tu la propages, il arrivera probablement un
moment o� il sera fonctionnellement normale de l'attraper (par exemple, dans
une m�thode proche de l'IHM o� tu signaleras que "le fichier n'existe pas").
En clair, personnellement, je ne me soucie pas de savoir si il s'agit d'une
m�thode private ou non pour renvoyer des exceptions. Je me pose cette unique
question :s 'agit-il d'un cas simple (o� je peux dire que �a a march� oui ou
non) dans lequel je renverrai oui ou non, ou s'agit-il au contraire d'un
traitement plus complexe o� l'appelant peut avoir besoin de savoir ce qui
s'est pass�. Cette question suffit g�n�ralement � d�terminer si on renvoie
un bool�en d'�tat, un objet ou si on pr�voit l'�mission d'exception.
Il est � noter qu'on se palce dans un cas complexe d�s que quelqu'un dit "ce
serait bien de savoir pourquoi �a n'a pas march�", ce qui arrive tout de
m�me tr�s souvent. Pour moi, le r�sultat vrai/faux n'est donc utilisable que
pour une t�che totallement isol�e, et surtout ne peut exprimer qu'un
r�sultat fonctionnel, et non un r�sultat organique. Par exemple, si dans un
client de mail j'ai une m�thode hasNewMail, cette m�thode renverra true si
du courrier est arriv�, false si aucun courrier n'est arriv�, et une
exception si on n'a pas pu se connecter au serveur.
>
> Cordialement.
> --
>             .------------------------------------------------.
>     .^.     | Didier Bretin, France | [EMAIL PROTECTED]    |
>     /V\     |-----------------------| www.informactis.com    |
>    // \\    |                       `------------------------|
>   /(   )\   | Visit: http://www.vim.org/                     |
>    ^^-^^    `------------------------------------------------'
>
Nicolas Delsaux

Répondre à