Comparison of the standard syntax and the proposed syntax. The standard syntax suggests the following use: : foo-aux ; : foo begin-loop \ different kinds of loops may be used here ['] foo-aux CATCH end-of-loop ; The proposed syntax suggests the following use: : foo TRY CATCH{ }CATCH ?DUP IF N ( times to retry) RETRY ( errc) THROW THEN ; A more expanded example. The lines responsible for counting and retrying attempts, and for propagation of exceptions are marked by ( *** ). You see 7 such lines in the standard syntax version, and only two in the proposed syntax version. The standard syntax version: \ unique error codes CREATE error1 CREATE error2 CREATE error3 : do-something1 ... IF error1 THROW THEN ... ; : do-something2 ... IF error1 THROW THEN ... ... IF error2 THROW THEN ... ... IF error3 THROW THEN ... ; : do-something3 ... IF error3 THROW THEN ... ; : foo-aux do-something1 do-something2 do-something3 ; : foo 0 >R ( *** ) BEGIN ( *** ) ['] foo-aux CATCH ?DUP ( *** ) WHILE ( *** ) DUP CASE error1 OF reaction1 ENDOF error2 OF reaction2 ENDOF error3 OF reaction3 ENDOF default-reaction ENDCASE ( errc) R@ 3 > AND THROW ( *** ) R> 1+ >R ( *** ) \ count attempts REPEAT R> DROP ( *** ) ; The version that uses the proposed syntax: \ unique error codes CREATE error1 CREATE error2 CREATE error3 : do-something1 ... IF error1 THROW THEN ... ; : do-something2 ... IF error1 THROW THEN ... ... IF error2 THROW THEN ... ... IF error3 THROW THEN ... ; : do-something3 ... IF error3 THROW THEN ... ; \ -- till now the code has been the same -- : foo TRY ( *** ) \ the place from which attempt retrial begins CATCH{ \ the code where exceptions can happen follows \ (the application logic) do-something1 do-something2 do-something3 }CATCH \ the code that examines whether the last \ attempt was successful follows \ (the error handling logic) ?DUP IF DUP CASE error1 OF reaction1 ENDOF error2 OF reaction2 ENDOF error3 OF reaction3 ENDOF default-reaction ENDCASE ( errc) 3 RETRY THROW ( *** ) \ besides TRY, this is the only line \ responsible for attempts counting&retrying \ and for error propagation THEN ; Conclusion The same amount of the application code and the error analysis code, besides that the auxiliary procedure is not required; less code required to organize retrying attempts.