+proc catch_restoreei {body} {
+ global errorInfo errorCode
+ set l [list $errorInfo $errorCode]
+ catch { uplevel 1 $body }
+ manyset $l errorInfo errorCode
+}
+
+proc catch_logged {body} {
+ global errorInfo
+ if {[catch { uplevel 1 $body } emsg]} {
+ logerror "error (catch_logged): $emsg\n $errorInfo"
+ }
+}
+