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