Posted to tcl by sebres at Tue Sep 17 18:55:25 GMT 2019view raw
- # ---------------------------------------------------
- # 1.a catch is main command - catch is in call stack:
- # ---------------------------------------------------
- % catch { \
- \
- \
- proc foo {} { \
- \
- \
- error test
- }
- foo
- }; puts $::errorInfo
- test
- while executing
- "error test"
- (procedure "foo" line 1)
- invoked from within
- "foo"
- invoked from within
- "catch { \
- \
- \
- proc foo {} { \
- \
- \
- error test
- }
- foo
- }"
- # ---------------------------------------------------
- # 1.b now put eval around - catch is NOT in call stack:
- # ---------------------------------------------------
- % eval {catch { \
- \
- \
- proc foo {} { \
- \
- \
- error test
- }
- foo
- }; puts $::errorInfo}
- test
- while executing
- "error test"
- (procedure "foo" line 1)
- invoked from within
- "foo"
- # =======================================================================================
- # ---------------------------------------------------
- # 2. info frame vs. proc - [info frame] is in line 4, [error] in line 1
- # ---------------------------------------------------
- % eval {catch { \
- \
- \
- proc foo {} { \
- \
- \
- error [info frame 0]
- }
- foo
- }; puts $::errorInfo}
- type proc line 4 cmd {info frame 0} proc ::foo level 0
- while executing
- "error [info frame 0]"
- (procedure "foo" line 1)
- invoked from within
- "foo"
- # =======================================================================================
- # ---------------------------------------------------
- # 3.1 file - error in file, line 9
- # ---------------------------------------------------
- $ echo '\
- \
- \
- proc foo {} { \
- \
- \
- error test
- }
- foo
- ' > /tmp/test | ./tcltest /tmp/test
- test
- while executing
- "error test"
- (procedure "foo" line 1)
- invoked from within
- "foo"
- (file "/tmp/test" line 9)
- # ---------------------------------------------------
- # 3.2 file (with eval around) - error in file, line 1
- # ---------------------------------------------------
- $ echo 'eval {\
- \
- \
- proc foo {} { \
- \
- \
- error test
- }
- foo
- }' > /tmp/test | ./tcltest /tmp/test
- test
- while executing
- "error test"
- (procedure "foo" line 1)
- invoked from within
- "foo"
- ("eval" body line 3)
- invoked from within
- "eval {\
- \
- \
- proc foo {} { \
- \
- \
- error test
- }
- foo
- }"
- (file "/tmp/test" line 1)