---
name: "error"
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/error/3tcl"
---

# error(3tcl)

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(3tcl)](/catch/3tcl.md), [return(3tcl)](/return/3tcl.md)

## KEYWORDS

error, exception
