throw  ( n -- )

publication: 15 mars 2022 / mis à jour 10 novembre 2024

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