User Guide

Table Of Contents
334 Chapter 14: Handling Errors
The custom tag finds all records in the cfdocexamples database with a matching last name, and
returns the results in a Caller variable. If it fails to connect with the main database, it tries a
backup database.
The calling page
The calling page represents a section from a larger application page. To keep things simple, the
example hard-codes the name to be looked up.
<cftry>
<cf_getEmps EmpName="Jones">
<cfcatch type="myApp.getUser.noEmpName">
<h2>Oops</h2>
<cfoutput>#cfcatch.Message#</cfoutput><br>
</cfcatch>
</cftry>
<cfif isdefined("getEmpsResult")>
<cfdump var="#getEmpsResult#">
</cfif>
Reviewing the code
The following table describes the code:
The custom tag page
The custom tag page searches for the name in the database and returns any matching records in a
getEmpsResult variable in the calling page. It includes several nested
cftry blocks to handle error
conditions. For a full description, see “Reviewing the code” on page 336, following the example:
Save the following code as getEmps.cfm in the same directory as the calling page.
<!--- If the tag didn’t pass an attribute, throw an error to be handled by
the calling page --->
<cfif NOT IsDefined("attributes.EmpName")>
<cfthrow Type="myApp.getUser.noEmpName"
message = "Last Name was not supplied to the cf_getEmps tag.">
<cfexit method = "exittag">
<!--- Have a name to look up --->
<cfelse>
<!--- Outermost Try Block --->
Code Description
<cftry>
<cf_getEmps EmpName="Jones">
In a cftry block, calls the cf_getEmps custom
tag (getEmps.cfm).
<cfcatch type="myApp.getUser.noEmpName">
<h2>Oops</h2>
<cfoutput>#cfcatch.Message#</cfoutput><br>
</cfcatch>
</cftry>
If the tag throws an exception indicating that it
did not receive a valid attribute, catches the
exception and displays a message, including
the message variable set by the
cfthrow tag in
the custom tag.
<cfif isdefined("getEmpsResult")>
<cfdump var="#getEmpsResult#">
</cfif>
If the tag returns a result, uses the cfdump tag
to display it. (A production application would
not use the
cfdump tag.)