Deutsch   English   Français   Italiano  
<65057626$0$8253$426a74cc@news.free.fr>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!npeer.as286.net!npeer-ng0.as286.net!proxad.net!feeder1-1.proxad.net!cleanfeed3-b.proxad.net!nnrp4-1.free.fr!not-for-mail
Date: Sat, 16 Sep 2023 11:32:21 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: DrPi <314@drpi.fr>
Subject: Re: To except or not to except ?
Newsgroups: fr.comp.lang.ada
References: <ue14pj$kj$1@shakotay.alphanet.ch> <ue16dc$35qrj$1@dont-email.me>
Content-Language: fr
In-Reply-To: <ue16dc$35qrj$1@dont-email.me>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Lines: 43
Message-ID: <65057626$0$8253$426a74cc@news.free.fr>
Organization: Guest of ProXad - France
NNTP-Posting-Date: 16 Sep 2023 11:32:22 CEST
NNTP-Posting-Host: 82.65.30.55
X-Trace: 1694856742 news-2.free.fr 8253 82.65.30.55:60510
X-Complaints-To: abuse@proxad.net
Bytes: 3264

Le 15/09/2023 à 10:59, J-P. Rosen a écrit :
>  > En Ada, il y a les exceptions.
>  > Y a t-il des règles Ada à respecter/recommandées pour la gestion des
>  > erreurs ?
> Les exceptions sont le meilleur moyen de traiter les situations... 
> exceptionnelles, i.e. celles qui obligent à sortir du traitement normal.
> En particulier:
> - On ne peut pas ignorer une exception. Si elle n'est pas traitée, elle 
> arrête le programme. Si un code d'erreur n'est pas testé, on continue 
> avec des données fausses (et C facilite ça en autorisant d'ignorer le 
> résultat d'une fonction). Grand principe: "il n'y a qu'une chose pire 
> qu'un programme qui se plante, c'est un programme qui donne des 
> résultats faux mais vraisemblables"
> - Il y a souvent plusieurs niveaux d'appel entre celui qui diagnostique 
> un problème et celui capable de le traiter. Les exceptions propagent 
> toutes seules. Avec les codes d'erreur, chaque niveau recevant une 
> erreur du dessus doit recréer un code d'erreur pour le niveau du dessous

Pour le fonctionnement des exceptions, c'est OK. J'ai compris le 
principe. A moins qu'il y ait des subtilités spécifiques à Ada.

>  > Par exemple, si j'ai bien compris, pour pouvoir prouver un programme,
>  > les exceptions sont interdites.
> Dans les codes sécuritaires, les exceptions posent problème parce 
> qu'elles causent des débranchements cachés, d'où problème pour calculer 
> le nombre cyclomatique ou prouver une couverture totale. De plus, on y a 
> les moyens (humains, techniques et financiers) pour prouver que tous les 
> codes de retour sont effectivement testés.
> Mais pour ceux qui n'ont ni les contraintes, ni les moyens financiers du 
> SIL4, je pense que les exceptions sont préférables (et à mon avis 
> sous-utilisées).
J'ai donné cet exemple mais je ne suis pas concerné. Je code à la 
maison. Même si je ne désespère pas utiliser Ada au boulot (pas de SIL4 
non plus).

> Exemple d'utilisation hors cas d'erreur: une procédure de recherche 
> récursive dans une structure. Quand on a trouvé, on lève une exception 
> que l'on récupère au premier niveau. Cela évite une tonne de tests du 
> type "si le niveau du dessus a la réponse, alors on retourne au niveau 
> du dessous".
Exemple intéressant. Je n'y aurait pas pensé.

Merci Jean-Pierre.