Exception Management
Try/Catch/Finally
The CFML language also provides you with a traditional approach to deal with error handling at the code block level. This is usually a trio of constructs:
try
: The try block allows you to demarcate the code to test if it fails or passes (https://cfdocs.org/cftry)catch
: The catch block is executed when the try block fails (https://cfdocs.org/cfcatch)finally
: The finally block executes no matter if the try fails or passes. It is guaranteed to always execute. (https://cfdocs.org/cffinally)
Basically, a try and catch statement attempts some code. If the code fails, CFML will do whatever is in the exception to try to handle it without breaking. Of course, many different types of exceptions can occur, which should sometimes be handled in a different manner than the others.
Catch Types
The catch construct can take an any
or a custom exception type declared by the CFML engine, Java code or custom exceptions within your code. This is a great way to be able to intercept for specific exception types and address them differently.
Native Exception Types
Some of the exception types found in CFML are the following
application
: catches application exceptionsdatabase
: catches database exceptionstemplate
: catches ColdFusion page exceptionssecurity
: catches security exceptionsobject
: catches object exceptionsmissingInclude
: catches missing include file exceptionsexpression
: catches expression exceptionslock
: catches lock exceptionscustom_type
: catches the specified custom exception type that is defined in a cfthrow tagjava.lang.Exception
: catches Java object exceptionssearchengine
: catches Verity search engine exceptionsany
: catches all exception types
Custom Exception Types
Custom exception types are defined by you the programmer and they can also be intercepted via their defined name. Let's say that the exception type is "InvalidInteger
" then you can listen to it like this:
Throwing Exceptions
Now that you have seen how to listen to exceptions, let's discover the throw
or cfthrow
constructs used to throw a developer-specific exception. (https://cfdocs.org/cfthrow)
The throw()
function or tag has several attributes:
Type : A custom or CFML core type
Message : Describes the exception event
Detail : A detailed description of the event
errorCode : A custom error code
extendedInfo : Custom extended information to send in the exception, can be anything
object : Mutually exclusive with the other attributes, usually another exception object or a raw Java exception type.
Rethrowing Exceptions
The rethrow
or cfrethrow
construct allows you to well, rethrow
the active exception by preserving all of the exception information and types. Usually you use rethrow
within a catch block after you have done some type of operations on the incoming exception. (https://cfdocs.org/cfrethrow)
Last updated