----- 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
