# Throw [v1.1.04+]

Signals the occurrence of an error. This signal can be caught by a try-catch statement.

    Throw [, Expression]

### Parameters

Expression | A value to store in catch's OutputVar. Since this parameter is an expression, all of the following are valid examples:
    throw 3
    throw "literal string"
    throw MyVar
    throw i + 1
    throw { what: "Custom error", file: A_LineFile, line: A_LineNumber } ; Throws an object
This parameter is always an expression, so variable references should not be enclosed in percent signs except to perform a double-deref. [v1.1.05+]: If omitted, an Exception object is thrown with a default message.

### Exception(Message [, What, Extra])

Creates an Exception object.

If What is omitted, it defaults to the name of the current function or subroutine. Otherwise it can be a string or a negative offset from the top of the call stack. For example, a value of -1 sets `Exception.What` to the current function or subroutine and `Exception.Line` to the line which called it.

    try
        BadlyCodedFunc()
    catch e
        MsgBox % "Error in " e.What ", which was called at line " e.Line

    BadlyCodedFunc() {
        throw Exception("Fail", -1)
    }

### Related

Try, Catch

### Examples

See Try.