Discussion:
Expressions avec raise.
(trop ancien pour répondre)
Blady
2019-09-29 08:11:45 UTC
Permalink
Bonjour,

Quelques questions issues d’exemples du dernier AARM 202x Section 11.3
Paragraphe 2.a.8, 2.a.10 et 2.a.11 :

Obj : Boolean := Func_Call or else (raise TBD_Error with Atomic);

--> je comprend que si Func_Call retourne False alors l'exception
TDB_Error est levée,
incidemment dans le cas contraire cela donne Obj toujours True ?

Pre : Boolean := (if not Is_Valid(Param) then raise Not_Valid_Error);

--> même constat avec Is_Valid, me semble équivalent à "Is_Valid(Param)
or else raise Not_Valid_Error" ?

A : A_Tagged := (Some_Tagged'(raise TBD_Error) with Comp => 'A');
B : Some_Array := (1, 2, 3, others => raise Not_Valid_Error);
C : Natural := Func (Val => raise TBD_Error);
D : A_Tagged := ((raise TBD_Error) with Comp => 'A');

--> je comprend qu'une expression raise peut se mettre partout où une
expression est légale, mais concernant les exemples A, B, C et D, il me
semble qu'à chaque fois l'exception est toujours levée, à quoi cela
sert-il ?

Merci, Pascal.
J-P. Rosen
2019-09-29 10:35:01 UTC
Permalink
Post by Blady
Quelques questions issues d’exemples du dernier AARM 202x Section 11.3
Attention: c'est le manuel annoté, donc il contient des tas d'exemples
bizarroïdes pour expliquer certaines règles. Les annotations sont
totalement informelles.
Post by Blady
Obj : Boolean := Func_Call or else (raise TBD_Error with Atomic);
--> je comprend que si Func_Call retourne False alors l'exception
TDB_Error est levée,
incidemment dans le cas contraire cela donne Obj toujours True ?
Oui.
Post by Blady
Pre : Boolean  := (if not Is_Valid(Param) then raise Not_Valid_Error);
--> même constat avec Is_Valid, me semble équivalent à "Is_Valid(Param)
or else raise Not_Valid_Error" ?
Oui
Post by Blady
A : A_Tagged   := (Some_Tagged'(raise TBD_Error) with Comp => 'A');
B : Some_Array := (1, 2, 3, others => raise Not_Valid_Error);
C : Natural    := Func (Val => raise TBD_Error);
D : A_Tagged   := ((raise TBD_Error) with Comp => 'A');
--> je comprend qu'une expression raise peut se mettre partout où une
expression est légale, mais concernant les exemples A, B, C et D, il me
semble qu'à chaque fois l'exception est toujours levée, à quoi cela
sert-il ?
Ca sert à faire un exemple...
--
J-P. Rosen
Adalog
2 rue du Docteur Lombard, 92441 Issy-les-Moulineaux CEDEX
Tel: +33 1 45 29 21 52, Fax: +33 1 45 29 25 00
http://www.adalog.fr
Loading...