The following example shows CFTRY and CFCATCH, using a sample data source called company and a sample included file, includeme.cfm
.
If an exception occurs during the CFQUERY statement's execution, the application page flow switches to the CFCATCH TYPE="Database" exception handler. It then resumes with the next statement after the CFTRY block, once the CFCATCH TYPE="Database" handler completes.
Similarly, the CFCATCH TYPE="MissingInclude" block handles exceptions raised by the CFINCLUDE tag. Any unknown, but possibly recoverable, exceptions are handled by the CFCATCH TYPE="Any" block.
<!--- Wrap code you want to check in a CFTRY block --->
<CFTRY><CFQUERY NAME="test" DATASOURCE="company"> SELECT DepartmentID, FirstName, LastName FROM employees WHERE employeeID=#EmpID# </CFQUERY> <HTML> <HEAD> <TITLE>Test CFTRY/CFCATCH</TITLE> </HEAD> <BODY> <HR> <CFINCLUDE TEMPLATE="includeme.cfm"> <CFOUTPUT QUERY="test"> <P>Department: #DepartmentID# <P>Last Name: #LastName# <P>First Name: #FirstName# </CFOUTPUT> <HR><!--- Use CFCATCH to test for missing included files. --->
<!--- Print Message and Detail error messages. --->
<!--- Block executes only if a MissingInclude exception is thrown. ---> <CFCATCH TYPE="MissingInclude"> <H1>Missing Include File</H1> <CFOUTPUT> <UL> <LI><B>Message:</B> #CFCATCH.Message# <LI><B>Detail:</B> #CFCATCH.Detail# <LI><B>File name:</B> #CFCATCH.MissingFilename# </UL> </CFOUTPUT> </CFCATCH><!--- Use CFCATCH to test for database errors.--->
<!--- Print error messages. --->
<!--- Block executes only if a Database exception is thrown. ---> <CFCATCH TYPE="Database"> <H1>Database Error</H1> <CFOUTPUT> <UL> <LI><B>Message:</B> #CFCATCH.Message# <LI><B>Native error code:</B> #CFCATCH.NativeErrorCode# <LI><B>SQLState:</B> #CFCATCH.SQLState# <LI><B>Detail:</B> #CFCATCH.Detail# </UL> </CFOUTPUT> </CFCATCH><!--- Use CFCATCH with TYPE="Any" --->
<!--- to find unexpected exceptions. --->
<CFCATCH TYPE="Any">
<H1>Other Error: #CFCATCH.Type#</H1>
<CFOUTPUT>
<UL>
<LI><B>Message:</B> #CFCATCH.message#
<LI><B>Detail:</B> #CFCATCH.Detail#
</UL>
</CFOUTPUT>
</CFCATCH>
</CFTRY>
</BODY>
</HTML>