summaryrefslogtreecommitdiffstats
path: root/doc/exit.n
diff options
context:
space:
mode:
Diffstat (limited to 'doc/exit.n')
-rw-r--r--doc/exit.n34
1 files changed, 27 insertions, 7 deletions
diff --git a/doc/exit.n b/doc/exit.n
index 5f72946..ab5c87d 100644
--- a/doc/exit.n
+++ b/doc/exit.n
@@ -5,10 +5,8 @@
'\" See the file "license.terms" for information on usage and redistribution
'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
'\"
-'\" RCS: @(#) $Id: exit.n,v 1.3 2000/09/07 14:27:47 poenitz Exp $
-'\"
-.so man.macros
.TH exit n "" Tcl "Tcl Built-In Commands"
+.so man.macros
.BS
'\" Note: do not modify the .SH NAME line immediately below!
.SH NAME
@@ -21,11 +19,33 @@ exit \- End the application
.PP
Terminate the process, returning \fIreturnCode\fR to the
system as the exit status.
-If \fIreturnCode\fR isn't specified then it defaults
+If \fIreturnCode\fR is not specified then it defaults
to 0.
+.SH EXAMPLE
+.PP
+Since non-zero exit codes are usually interpreted as error cases by
+the calling process, the \fBexit\fR command is an important part of
+signaling that something fatal has gone wrong. This code fragment is
+useful in scripts to act as a general problem trap:
+.PP
+.CS
+proc main {} {
+ # ... put the real main code in here ...
+}
-.SH "SEE ALSO"
-exec(n), tclvars(n)
+if {[catch {main} msg options]} {
+ puts stderr "unexpected script error: $msg"
+ if {[info exist env(DEBUG)]} {
+ puts stderr "---- BEGIN TRACE ----"
+ puts stderr [dict get $options -errorinfo]
+ puts stderr "---- END TRACE ----"
+ }
+ # Reserve code 1 for "expected" error exits...
+ \fBexit\fR 2
+}
+.CE
+.SH "SEE ALSO"
+exec(n)
.SH KEYWORDS
-exit, process
+abort, exit, process