Re: Assertion pour les exceptions
Jean-Pierre Rosen via Ada-france <[email protected]> Wed, 12 Jan 2022 19:19:46 +0100
| Newsgroups | gmane.comp.lang.ada.france |
|---|---|
| Message-ID | <[email protected]> |
Le 12/01/2022 à 18:41, Thomas De Contes a écrit : > C'est marrant, une "expression raise" peut vraiment être mise dans n'importe quelle expression n'importe où, pas uniquement à des endroits prévus comme l'aspect Predicate_Failure. C'est général en Ada: on évite les cas particuliers. Si c'est autorisé à un endroit, c'est autorisé partout. Ceci dit, c'est rarement utile en dehors des prédicats. >> 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). > Pas trouvé. Chez moi 13.13.1 correspond à "The Package Streams" et ne contient que 11 lignes. Oups, je fais référence à ce que j'utilise... le futur ARM 2022, disponible ici: http://www.ada-auth.org/standards/ada2x.html L'exemple était le suivant: *procedure*Write ( Stream : *in out* Stream_Type; Item : *in* Stream_Element_Array) *with* Pre => Element_Count (Stream) + Item'Length <= Stream.Max_Elements *or else* (*raise* Constraint_Error), Post => Element_Count (Stream) = Element_Count (Stream)'Old + Item'Length; > J'ai failli dire que c'est une question que je n'aurai plus besoin de poser puisqu'elle "est répondue", sauf que je ne vois toujours rien dans les pré-conditions qui concerne les "expressions raise" : > > Est-ce que tu proposes de l'encadrer avec un truc du genre "(if not <pré-condition> then <expression raise>)" ? Cf. ci-dessus > On aurait pu laisser les gens utiliser la même astuce pour les prédicats de sous-type, du coup, non ? On peut. -- 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