---
name: "exit"
section: "3tcl"
platform: "linux"
package: "tcl8.6-doc"
version: "8.6.16+dfsg-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/exit/3tcl"
---

# exit(3tcl)

End the application

```

```

## NAME

exit - End the application

## SYNOPSIS

**exit** ?*returnCode*?

```

```

## DESCRIPTION

Terminate the process, returning *returnCode* to the system as the exit status. If *returnCode* is not specified then it defaults to 0.

## EXAMPLE

Since non-zero exit codes are usually interpreted as error cases by the calling process, the **exit** 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:

```
proc main {} {
    # ... put the real main code in here ...
}
if {[catch {main} msg options]} {
    puts stderr "unexpected script error: $msg"
    if {[info exists env(DEBUG)]} {
        puts stderr "---- BEGIN TRACE ----"
        puts stderr [dict get $options -errorinfo]
        puts stderr "---- END TRACE ----"
    }
    # Reserve code 1 for "expected" error exits...
    exit 2
}
```

## SEE ALSO

[exec(3tcl)](/exec/3tcl.md)

## KEYWORDS

abort, exit, process
