Usage
You must
code at least one cfcatch tag within a cftry block.
Put cfcatch tags at the end of a cftry block.
ColdFusion tests cfcatch tags in the order in which
they appear. This tag requires an end tag.
If type="any",
ColdFusion catches exceptions from any CFML tag, data source, or
external object. To get the exception type use code such as the
following:
#cfcatch.type#
Applications
can use the cfthrow tag to throw developer-defined
exceptions. Catch these exceptions with any of these type options:
"custom_type"
"Application"
"Any"
The custom_type type
is a developer-defined type specified in a cfthrow tag.
If you define a custom type as a series of strings concatenated
by periods (for example, "MyApp.BusinessRuleException.InvalidAccount"), ColdFusion
can catch the custom type by its character pattern. ColdFusion searches
for a cfcatch tag in the cftry block
with a matching exception type, starting with the most specific
(the entire string), and ending with the least specific.
For
example, you could define a type as follows:
<cfthrow type = "MyApp.BusinessRuleException.InvalidAccount">
If
you have the following cfcatch tag, it handles
the exception:
<cfcatch type = "MyApp.BusinessRuleException.InvalidAccount">
Otherwise,
if you have the following cfcatch tag, it handles
the exception:
<cfcatch type = "MyApp.BusinessRuleException">
Finally,
if you have the following cfcatch tag, it handles
the exception:
<cfcatch type = "MyApp">
You
can code cfcatch tags in any order to catch a custom
exception type.
If you specify type = "Application",
the cfcatch tag catches only custom exceptions
that have the Application type in the cfthrow tag
that defines them.
The cfinclude, cfmodule,
and cferror tags throw an exception of type = "template".
An
exception that is thrown within a cfcatch block
cannot be handled by the cftry block that immediately
encloses the cfcatch tag. However, you can rethrow
the currently active exception with the cfrethrow tag.
The cfcatch variables
provide the following exception information:
cfcatch variable
|
Content
|
cfcatch.type
|
Type: Exception type, as specified in cfcatch.
|
cfcatch.message
|
Message: Exception’s diagnostic message,
if provided; otherwise, an empty string; in the cfcatch.message variable.
|
cfcatch.detail
|
Detailed message from the CFML interpreter
or specified in a cfthrow tag. When the exception
is generated by ColdFusion (and not cfthrow), the
message can contain HTML formatting and can help determine which
tag threw the exception.
|
cfcatch.tagcontext
|
An array of tag context structures, each
representing one level of the active tag context at the time of the
exception.
|
cfcatch.NativeErrorCode
|
Applies to type="database".
Native error code associated with exception. Database drivers typically provide
error codes to diagnose failing database operations. Default value
is -1.
|
cfcatch.SQLState
|
Applies to type="database".
SQLState associated with exception. Database drivers typically provide error
codes to help diagnose failing database operations. Default value
is ‑1.
|
cfcatch.Sql
|
Applies to type="database".
The SQL statement sent to the data source.
|
cfcatch.queryError
|
Applies to type="database".
The error message as reported by the database driver.
|
cfcatch.where
|
Applies to type="database".
If the query uses the cfqueryparam tag, query parameter
name-value pairs.
|
cfcatch.ErrNumber
|
Applies to type="expression".
Internal expression error number.
|
cfcatch.MissingFileName
|
Applies to type="missingInclude".
Name of file that could not be included.
|
cfcatch.LockName
|
Applies to type="lock".
Name of affected lock (if the lock is unnamed, the value is "anonymous").
|
cfcatch.LockOperation
|
Applies to type="lock".
Operation that failed (Timeout, Create Mutex, or Unknown).
|
cfcatch.ErrorCode
|
Applies to type="custom".
String error code.
|
cfcatch.ExtendedInfo
|
Applies to type="application" and "custom".
Custom error message; information that the default exception handler
does not display.
|