Index: openacs-4/packages/acs-tcl/tcl/openacs-kernel-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-tcl/tcl/openacs-kernel-procs.tcl,v diff -u -r1.7 -r1.8 --- openacs-4/packages/acs-tcl/tcl/openacs-kernel-procs.tcl 27 Feb 2005 22:45:39 -0000 1.7 +++ openacs-4/packages/acs-tcl/tcl/openacs-kernel-procs.tcl 19 Feb 2006 19:33:27 -0000 1.8 @@ -108,6 +108,9 @@ ns_getcsv $csv_stream headers } + # provide access to errorInfo and errorCode + global errorInfo errorCode + # Upvar Magic! upvar 1 $array_name row_array @@ -130,10 +133,17 @@ # Now we are ready to process the code block set errno [catch { uplevel 1 $code_block } error] - # Error? - if {$errno > 0} { - return -code $error - } + # handle error, return, break, continue + # (source: http://wiki.tcl.tk/unless last case) + switch -exact -- $errno { + 0 {} + 1 {return -code error -errorinfo $errorInfo \ + -errorcode $errorCode $error} + 2 {return $error} + 3 {break} + 4 {} + default {return -code $errno $error} + } } }