# CFTHROW

The CFTHROW tag raises a developer-specified exception that can be caught with CFCATCH tag having any of the following type specifications:

- CFCATCH TYPE= "custom_type "
- CFCATCH TYPE= "APPLICATION "
- CFCATCH TYPE= "ANY "

### Syntax

    <CFTHROW
        TYPE= "exception_type "
        MESSAGE="message"
        DETAIL= "detail_description "
        ERRORCODE= "error_code "
        EXTENDEDINFO= "additional_information ">

#### TYPE

Optional. A custom type or the predefined type APPLICATION. None of the other predefined types should be specified because these types are not generated by ColdFusion applications. If you specify the exception type APPLICATION, you need not specify a type for CFCATCH, because the APPLICATION type is the default CFCATCH type.

#### MESSAGE

Optional. A message that describes the exceptional event.

#### DETAIL

Optional. A detailed description of the event. The ColdFusion server appends the position of the error to this description; the server uses this parameter if an error is not caught by your code.

#### ERRORCODE

Optional. A custom error code that you supply.

#### EXTENDEDINFO

Optional. A custom error code that you supply.

### Usage

Use CFTHROW within a CFTRY block to raise an error condition.The CFCATCH block can access any accompanying information as follows:

- Message with CFCATCH.message
- Detail with CFCATCH.detail
- Error code with CFCATCH.errorcode.
- To get additional information, use CFCATCH.TagContext. TagContext captures the context of the exception; that is, the name and position of each tag in the tag stack, and the full path names of the files that contain the tags in the tag stack.

Note | In order to see the information displayed by TagContext, use the ColdFusion Administrator to enable the CFML stack trace.Under Debugging in the ColdFusion Administrator, choose the checkbox next to "Enable CFML stack trace. "

### Example

    <!--- This example shows the use of CFTHROW. --->

    <HTML>

    <HEAD>
    <TITLE>
    CFTHROW Example
    </TITLE>
    </HEAD>

    <BASEFONT FACE="Arial, Helvetica" SIZE=2>

    <BODY  bgcolor="#FFFFD5">

    <H3>CFTHROW Example</H3>

    <!--- open a CFTRY block --->
    <CFTRY>
    <!--- define a condition upon which to throw
          the error --->
        <CFIF NOT IsDefined("URL.myID")>
    <!--- throw the error --->
            <CFTHROW MESSAGE="ID is not defined">
        </CFIF>

    <!--- perform the error catch --->
    <CFCATCH TYPE="application">
    <!--- display your message --->
        <H3>You've Thrown an <B>Error</B></H3>
    <CFOUTPUT>
    <!--- and the diagnostic feedback from the
    application server --->
        <P>#CFCATCH.message#</P>
        <P>The contents of the tag stack are:</P>
        <CFLOOP index=i from=1 to = #ArrayLen(CFCATCH.TAGCONTEXT)#>
              <CFSET sCurrent = #CFCATCH.TAGCONTEXT[i]#>
                  <BR>#i# #sCurrent["ID"]#
    (#sCurrent["LINE"]#,#sCurrent["COLUMN"]#) #sCurrent["TEMPLATE"]#
        </CFLOOP>
    </CFOUTPUT>
    </CFCATCH>

    </CFTRY>

    </BODY>

    </HTML>