Re: Assertion pour les exceptions
Jean-Pierre Rosen via Ada-france <[email protected]> Wed, 12 Jan 2022 07:39:20 +0100
| Newsgroups | gmane.comp.lang.ada.france |
|---|---|
| Message-ID | <[email protected]> |
Le 11/01/2022 à 21:44, Thomas De Contes via Ada-france a écrit : > Dit-on plutôt "soulever", "lever", ou "déclencher" ? > (Avant je disais "renvoyer", mais apparemment c'est pas bon.) Officiellement, "lever" en français. > Je commence à avoir le réflexe des pré/post-conditions (pas encore des prédicats de sous-type ni des invariants de type, que je ne maitrise pas suffisamment). > > Mais je crois me souvenir d'avoir entendu parler d'un type d'assertions (ou quelque chose de similaire) qui concernerait les exceptions. > Ça permettrais d'indiquer dans la spec si un sous-programme peut déclencher telle ou telle exception, ou s'il ne devrais en déclencher aucune. > Et ça aurais un effet du genre : si ça déclenche une exception qui n'a pas été prévue dans la spec, ça la remplace par Assertion_Error. > > Est-ce que j'ai rêvé ou pas ? > (C'est bête, c'est quelque chose qui m'a complètement échappé dernièrement alors que j'avais l'occasion de m'en servir ... Tant pis, je me renseigne pour la prochaine fois :-) ) > Il est possible de mettre dans une pré-condition une "expression raise", c'est à dire que "raise" peut être considéré comme une expression compatible avec n'importe quel type. Cela permet d'exprimer quelle exception est levée si la pré-condition n'est pas respectée (par exemple, 13.13.1(29/5). Il n'y a pas de contrat sur les exceptions, car ça pose un gros problème avec l'héritage. Si on a une pile dont le contrat dit que Push peut lever l'exception Pile_Pleine et rien d'autre, alors on interdit une implémentation sur disque qui serait susceptible de lever des erreurs d'entrée-sortie. Bien sûr, Java a fait l'erreur, et ils ont été obligés de rajouter des "unchecked exceptions" qui ne sont pas héritées. -- J-P. Rosen Adalog 2 rue du Docteur Lombard, 92441 Issy-les-Moulineaux CEDEX Tel: +33 1 45 29 21 52 https://www.adalog.fr _______________________________________________ Ada-france mailing list [email protected] https://mail.ada-france.org/cgi-bin/mailman/listinfo/ada-france