
297
DEVELOPING
COLDFUSION 9 APPLICATIONS
Developing CFML Applications
Las
t
upda
te
d 8/5/2010
<cftry>
<cftry>
Code that might throw a database error
<cfcatch Type="Database">
<cfif Error is of type I can Handle>
Handle it
<cfelse>
<cfrethrow>
</cfif
</cfcatch>
</cftry>
<cfcatch Type="Any">
General Error Handling code
</cfcatch>
</cftry>
Although this example uses a Database error as an example, you can use any
cfcatch
type attribute in the innermost
error type.
Follow these rules when you use the
cfrethrow
tag:
•
Nest
cftry
tags, with one tag for each level of error handling hierarchy. Each level contains the
cfcatch
tags for
that level of error granularity.
•
Place the most general error catching code in the outermost
cftry
block.
•
Place the most specific error catching code in the innermost
cftry
block.
•
Place the code that can cause an exception error at the top of the innermost
cftry
block.
•
End each
cfcatch
block except those in the outermost
cftry
block with a
cfrethrow
tag.
Example: using nested tags, cfthrow, and cfrethrow
The following example shows many of the discussed techniques including nested
cftry
blocks and the
cfthrow
and
cfrethrow
tags. The example includes a simple calling page and a custom tag page:
•
The calling page does little more than call the custom tag with a single attribute, a name to be looked up in a
database. It does show, however, how a calling page can handle an exception thrown by the custom tag.
•
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>
Содержание COLDFUSION 9
Страница 1: ...Developing Applications ADOBE COLDFUSION 9...