CFTHROW |
Description
Throws a developer-specified exception, which can be caught with a cfcatch tag that has any of the following type attribute options: type = "custom_type" type = "Application" type = "Any"
Category
Exception handling tags, Flow-control tags
Syntax
    <cfthrow
       type = "exception_type "
       message = "message"
       detail = "detail_description "
       errorCode = "error_code "
       extendedInfo = "additional_information"
       object = "java_except_object">
Syntax
    <cfthrow
       object = #object_name#>
See also
cferror, cfrethrow, cftry, Chapter 14, "Handling Errors," in Developing ColdFusion MX Applications
History
ColdFusion MX: Changed thrown exceptions: this tag can throw ColdFusion component method exceptions.
Usage
Use this tag within a cftry block, to throw an error. The cfcatch block can access accompanying information, as follows: Message, with cfcatch.message Detail, with cfcatch.detail Error code, with cfcatch.errorcode
To get more information, use cfcatch.tagContext. This array shows where control switches from one page to another in the tag stack (for example, cfinclude, cfmodule).
To display the information displayed by tagContext: in the ColdFusion MX Administrator, Debugging page, select Enable CFML Stack Trace.
Using the object parameter To use this tag with the object parameter, you must first use a cfobject tag that specifies a valid Java exception class. For example, the following cfobject tag defines an object, obj, of the exception class myException (which you must create in Java):
    <cfobject
    type="java"
    action="create"
    class="myException"
    name="obj">
If your exception class has constructors that take parameters, such as a message, you can use the special init method to invoke the constructor, as in the following line. If you do not need to specify any constructor attributes, you can omit this step.
    <cfset obj.init("You must save your work before preceding")>
You can then use the, the cfthrow statement to throw the exception as follows:
    <cfthrow object=#obj#>
For more information on using Java objects in ColdFusion, see Chapter 33, "Integrating J2EE and Java Elements in CFML Applications,"in Developing ColdFusion MX Applications.
Example
    <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>
Example
The following example shows how to throw an exception from a component method:
    <cfcomponent>
       <cffunction name="getEmp">
       <cfargument name="lastName" required="yes">
           <cfquery name="empQuery" datasource="ExampleApps" >
              SELECT LASTNAME, FIRSTNAME, EMAIL
              FROM tblEmployees
             WHERE LASTNAME LIKE '#arguments.lastName#'
           </cfquery>
           <cfif empQuery.recordcount LT 1>
              <cfthrow type="noQueryResult"
                message="No results were found. Please try again.">
             <cfelse>
                  <cfreturn empQuery>
            </cfif>
       </cffunction>
    </cfcomponent>
For an explanation of the example and more information, see Chapter 11, "Building and Using ColdFusion Components," in Developing ColdFusion MX Applications.

TYPE |
| Optional
Default value: "Application" A custom type Application Do not enter another predefined type; types are not generated by ColdFusion applications. If you specify Application, you need not specify a type for cfcatch.

MESSAGE |
| Optional
Message that describes exception event.

DETAIL |
| Optional
Description of the event. ColdFusion appends error position to description; 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.

OBJECT |
| Optional
Requires the value of the cfobject tag name attribute. Throws a Java exception from a CFML tag. This attribute is mutually exclusive with all other attributes of this tag.