throw  ( n -- )

publication: 15 mars 2022 / mis à jour 2 août 2022

Read this page in english

 

vocabulaire: forth

GénÚre une erreur si n pas égal à zéro.

Si les bits de n ne sont pas nuls, extraie l'exception en tĂȘte de la pile d'exceptions, ainsi que tout ce qui se trouve sur la pile de retour au-dessus de ce cadre. Ensuite, restaure la spĂ©cification de la source d'entrĂ©e utilisĂ©e avant le CATCH correspondant et ajuste les profondeurs de toutes les piles dĂ©finies par cette norme afin qu'elles soient identiques aux profondeurs enregistrĂ©es dans le cadre d'exception (i est le mĂȘme nombre que le i dans les arguments d'entrĂ©e au CATCH correspondant), place n au-dessus de la pile de donnĂ©es et transfĂšre le contrĂŽle Ă  un point juste aprĂšs le CATCH qui a poussĂ© ce cadre d'exception.

Exemple:

: could-fail ( -- char ) 
   KEY DUP [CHAR] Q = IF 1 THROW THEN ; 
 
: do-it ( a b -- c) 2DROP could-fail ; 
 
: try-it ( --) 
   1 2 ['] do-it CATCH IF 
   ( x1 x2 ) 2DROP ." There was an exception" CR 
   ELSE ." The character was " EMIT CR 
   THEN 
; 
 
: retry-it ( -- ) 
   BEGIN 1 2 ['] do-it CATCH WHILE 
   ( x1 x2) 2DROP ." Exception, keep trying" CR 
   REPEAT ( char ) 
   ." The character was " EMIT CR 
; 

Legal: site web personnel sans commerce / personal site without seling