package require Tcl 8.5
# Throw
proc e {args} {
error "error message" "error message for stack trace" {errorCode list}
}
# Catch and rethrow
proc f {} {
if {[catch {e 1 2 3 4} errMsg options] != 0} {
return -options $options $errMsg
f