version 1.11, 2006/10/08 11:30:56
|
version 1.12, 2006/10/11 19:18:51
|
Line 76 Defer store-backtrace
|
Line 76 Defer store-backtrace
|
|
|
\ !! explain handler on-stack structure |
\ !! explain handler on-stack structure |
|
|
|
Variable first-throw |
|
: nothrow ( -- ) first-throw on ; |
|
|
: (try) ( ahandler -- ) |
: (try) ( ahandler -- ) |
|
first-throw on |
r> |
r> |
swap >r \ recovery address |
swap >r \ recovery address |
rp@ 'catch >r |
rp@ 'catch >r |
Line 125 is catch
|
Line 129 is catch
|
:noname ( y1 .. ym error/0 -- y1 .. ym / z1 .. zn error ) \ exception |
:noname ( y1 .. ym error/0 -- y1 .. ym / z1 .. zn error ) \ exception |
?DUP IF |
?DUP IF |
[ here forthstart 9 cells + ! ] |
[ here forthstart 9 cells + ! ] |
store-backtrace error-stack off |
first-throw @ IF |
|
store-backtrace error-stack off |
|
first-throw off |
|
THEN |
handler @ ?dup-0=-IF |
handler @ ?dup-0=-IF |
>stderr cr ." uncaught exception: " .error cr |
>stderr cr ." uncaught exception: " .error cr |
2 (bye) |
2 (bye) |