Artifact [f9b957a553]
Not logged in

Artifact f9b957a5539d413968c2fc486d122e68131d0556d407e39a066905efd3bd9137:


---
CommandName: error
ManualSection: n
Version: unknown
TclPart: Tcl
TclDescription: Tcl Built-In Commands
Links:
 - catch(n)
 - return(n)
Keywords:
 - error
 - exception
Copyright:
 - Copyright (c) 1993 The Regents of the University of California.
 - Copyright (c) 1994-1996 Sun Microsystems, Inc.
---

# Name

error - Generate an error

# Synopsis

::: {.synopsis} :::
[error]{.cmd} [message]{.arg} [info]{.optarg} [code]{.optarg} 
:::

# 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"
}
```