summaryrefslogtreecommitdiffstats
path: root/doc/exit.n
diff options
context:
space:
mode:
Diffstat (limited to 'doc/exit.n')
-rw-r--r--doc/exit.n33
1 files changed, 28 insertions, 5 deletions
diff --git a/doc/exit.n b/doc/exit.n
index d3960f0..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.2 1998/09/14 18:39:52 stanton 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,8 +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 ...
+}
+
+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