Adobe 38043740 - ColdFusion Standard - Mac Development Manual page 175

Developing applications
Hide thumbs Also See for 38043740 - ColdFusion Standard - Mac:
Table of Contents

Advertisement

DEVELOPING COLDFUSION 9 APPLICATIONS
Building Blocks of ColdFusion Applications
Handling exceptions in UDFs
Use try/catch blocks to handle exceptions in a UDF under the same conditions that any other ColdFusion application
uses try/catch blocks. These conditions are typically circumstances where the function uses an external resource, such
as a Java, COM, or CORBA object, a database, or a file. When possible, have your application prevent, rather than
catch, exceptions caused by invalid application data. For example, the application can prevent users from entering a
zero value for a form field that is used to divide another number, rather than handling exceptions generated by dividing
by zero.
When ColdFusion catches an exception, the function can use any of the following methods to handle the exception:
• If the error is recoverable (for example, if the problem is a database time-out where in some cases retrying resolves
the issue), try to recover from the problem.
• Display a message, as described in
• Return an error status, as described in
• If the UDF is defined using the
calling ColdFusion page catches it. For more information on throwing and rethrowing exceptions, see
runtime exceptions with ColdFusion
Generating exceptions in UDFs
If you define your function using the
to the page that called the function. You can use this technique whenever your UDF identifies an error, instead of
displaying a message or returning an error status. For example, the following code rewrites the example from
"Providing status
information" on page 167 to use the
exception if any of the form values are not positive numbers.
The lines that identify invalid data and throw the exception are in bold. The remaining lines are equivalent to the
CFScript code in the previous example. However, the code that removes unwanted characters must precede the error
checking code.
<cffunction name="TotalInterest">
<cfargument name="principal" required="Yes">
<cfargument name="annualPercent" required="Yes">
<cfargument name="months" required="Yes">
<cfset var years = 0>
<cfset var interestRate = 0>
<cfset var totalInterest = 0>
<cfset principal = trim(principal)>
<cfset principal = REReplace(principal,"[\$,]","","ALL")>
<cfset annualPercent = Replace(annualPercent,"%","","ALL")>
<cfif ((principal LE 0) OR (annualPercent LE 0) OR (months LE 0))>
<cfthrow type="InvalidData" message="All values must be greater than 0.">
</cfif>
<cfset interestRate = annualPercent / 100>
<cfset years = months / 12>
<cfset totalInterest = principal*
(((1+ interestRate)^years)-1)>
<cfreturn DollarFormat(totalInterest)>
</cffunction>
The code that calls the function and handles the exception looks like the following. The changed lines are in bold.
"Displaying error
messages" on page 166.
"Providing status
information" on page 167.
tag, throw a custom exception, or rethrow the exception so that it the
cffunction
tags" on page 287.
tag, you can use the
cffunction
cffunction
Last updated 1/20/2012
and
cfthrow
cfrethrow
tag and CFML, and to throw and handle an
170
"Handling
tags to throw errors

Advertisement

Table of Contents
loading

This manual is also suitable for:

Coldfusion 9

Table of Contents