Handling exceptions

ColdFusion provides two statements for exception handling in CFScript: try and catch. These statements are equivalent to the CFML cftry and cfcatch tags.

Note:

For a discussion of exception handling in ColdFusion, see Handling Errors.

Exception handling syntax and rules

Exception-handling code in CFScript has the following format:

try {
Code where exceptions will be caught
}
catch(exceptionType exceptionVariable) {
Code to handle exceptions of type exceptionType
that occur in the try block
}
...
catch(exceptionTypeN exceptionVariableN) {
Code to handle exceptions of type
exceptionTypeN that occur in the try block
}
finally {
Code that will execute whether there is an exception or not.
}
try { Code where exceptions will be caught } catch(exceptionType exceptionVariable) { Code to handle exceptions of type exceptionType that occur in the try block } ... catch(exceptionTypeN exceptionVariableN) { Code to handle exceptions of type exceptionTypeN that occur in the try block } finally { Code that will execute whether there is an exception or not. }
try { 
 Code where exceptions will be caught 
} 
catch(exceptionType exceptionVariable) { 
 Code to handle exceptions of type exceptionType  
 that occur in the try block 
} 
...  
catch(exceptionTypeN exceptionVariableN) { 
 Code to handle exceptions of type  
 exceptionTypeN that occur in the try block 
} 
finally { 
 Code that will execute whether there is an exception or not. 
} 
Note:

In CFScript, catch and finally statements follow the try block; you do not place them inside the try block. This structure differs from that of the cftry tag, which must include the cfcatch and cffinallytags in its body.

When you have a try statement, you must have a catch statement. In the catch block, the exceptionVariable variable contains the exception type. This variable is the equivalent of the cfcatch tag cfcatch.Type built-in variable.
The finally block is optional. Its code always runs, and runs after the code in the try block and any catch block.

Exception handling example

The following code shows exception handling in CFScript. It uses a CreateObject function to create a Java object. The catch statement executes only if the CreateObject function generates an exception. The displayed information includes the exception message; the except.Message variable is the equivalent of calling the Java getMessage method on the returned Java exception object. The message in the finally block appears after the catch block message.

<cfscript>
try {
emp = CreateObject("Java", "Employees");
}
catch(any excpt) {
WriteOutput("The application was unable to perform a required operation.<br>
Please try again later.<br>If this problem persists, contact
Customer Service and include the following information:<br>
#excpt.Message#<br>");
}
finally {
writeoutput("<br>Thank you for visiting our web site.<br>come back soon!");
}
</cfscript>
<cfscript> try { emp = CreateObject("Java", "Employees"); } catch(any excpt) { WriteOutput("The application was unable to perform a required operation.<br> Please try again later.<br>If this problem persists, contact Customer Service and include the following information:<br> #excpt.Message#<br>"); } finally { writeoutput("<br>Thank you for visiting our web site.<br>come back soon!"); } </cfscript>
<cfscript> 
 try { 
  emp = CreateObject("Java", "Employees"); 
 } 
 catch(any excpt) { 
  WriteOutput("The application was unable to perform a required operation.<br> 
 Please try again later.<br>If this problem persists, contact 
 Customer Service and include the following information:<br> 
    #excpt.Message#<br>"); 
 } 
 finally { 
 writeoutput("<br>Thank you for visiting our web site.<br>come back soon!"); 
 } 
</cfscript>

Multiple exception handling in catch statements

Note: Added in ColdFusion (2025 release).

ColdFusion also supports multiple exception handling. You can handle multiple exceptions using a single catch statement within a try/catch block, separated by pipes.

For example,

<cfscript>
try {
// Code that might throw an exception
result = 10 / 0; // This will throw an arithmetic exception
}
catch (expression|application|database e) {
// This block catches arithmetic or divide by zero errors
writeOutput("Error caught: " & e.message);
}
catch (any e) {
// A generic catch block for all other exceptions
writeOutput("Unknown Error: " & e.message);
}
</cfscript>
<cfscript> try { // Code that might throw an exception result = 10 / 0; // This will throw an arithmetic exception } catch (expression|application|database e) { // This block catches arithmetic or divide by zero errors writeOutput("Error caught: " & e.message); } catch (any e) { // A generic catch block for all other exceptions writeOutput("Unknown Error: " & e.message); } </cfscript>
<cfscript>
    try {
        // Code that might throw an exception
        result = 10 / 0; // This will throw an arithmetic exception
    } 
    catch (expression|application|database e) {
        // This block catches arithmetic or divide by zero errors
        writeOutput("Error caught: " & e.message);
    } 
    catch (any e) {
        // A generic catch block for all other exceptions
        writeOutput("Unknown Error: " & e.message);
    }
</cfscript>

Output

Error caught: Division by zero.

Get help faster and easier

New user?