---
name: "error"
section: "n"
platform: "macos"
package: "tcl"
version: "152"
release: "macOS 26.5"
platforms: ["linux", "macos"]
url: "https://new.carta.tech/error/n"
---

# error(n)

Generate an error

## NAME

error - Generate an error

## SYNOPSIS

**error** *message* ?*info*? ?*code*?

## DESCRIPTION

Returns a **TCL\_ERROR** code, which causes command interpretation to be unwound.  *Message* is a string that is returned to the application to indicate what went wrong.

The **-errorinfo** return option of an interpreter is used to accumulate a stack trace of what was in progress when an error occurred; as nested commands unwind, the Tcl interpreter adds information to the **-errorinfo** return option.  If the *info* argument is present, it is used to initialize the **-errorinfo** return options and the first increment of unwind information will not be added by the Tcl interpreter.   In other words, the command containing the **error** command will not appear in the stack trace; in its place will be *info*. Historically, this feature had been most useful in conjunction with the **catch** command: if a caught error cannot be handled successfully, *info* can be used to return a stack trace reflecting the original point of occurrence of the error: **catch {...} errMsg** **set savedInfo $::errorInfo** **...** **error $errMsg $savedInfo** When working with Tcl 8.5 or later, the following code should be used instead: **catch {...} errMsg options** **...** **return -options $options $errMsg**

If the *code* argument is present, then its value is stored in the **-errorcode** return option.  The **-errorcode** return option is intended to hold a machine-readable description of the error in cases where such information is available; see the **return** manual page for information on the proper format for this option's value.

## EXAMPLE

Generate an error if a basic mathematical operation fails: if {1+2 != 3} {\
     **error** "something is very wrong with addition" }

## SEE ALSO

[catch(n)](/catch/n.md), [return(n)](/return/n.md)

## KEYWORDS

error
