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. 
} 
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 cffinally tags 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>