Runs when an uncaught exception occurs in the application.
<cffunction name="onError" returnType="void"> <cfargument name="Exception" required=true/> <cfargument name="EventName" type="String" required=true/> ... </cffunction>
Method summary, "Handling errors in Application.cfc" in the ColdFusion Developer's Guide
ColdFusion passes the following parameters to the method:
Parameter |
Description |
---|---|
Exception |
The ColdFusion Exception object. For information on the structure of this object, see the description of the cfcatch variable in the cfcatch description. |
EventName |
The name of the event handler that generated the exception. If the error occurs during request processing and you do not implement an onRequest method, this is the empty string. |
This method does not return a value; do not use the cfreturn tag.
Use this method to handle errors in an application-specific manner. This method overrides any error handlers that you set in the ColdFusion Administrator or in cferror tags. It does not override try/catch blocks.
Whether the onError method can display output depends on where the error takes place, as follows:
If the onError event handler is triggered by a scope-specific event method, such as onSessionStart, the error prevents further processing at the level of that scope and any lower scopes. An onError event triggered by an onSessionStart method, for example, prevents further processing in the session, but not in the application.
If an exception occurs while processing the onError method, or if the onError method uses a cfthrow tag, the ColdFusion standard error handling mechanisms handle the exception. These mechanisms include: any error handlers specified by cferror tags in the Application.cfc initialization code, the site-wide error handler specified in the ColdFusion Administrator, and ColdFusion default error page. Therefore, you can use the onError method as a filter to handle selected errors, and use other ColdFusion error-handling techniques for the remaining errors.
<cffunction name="onError"> <cfargument name="Exception" required=true/> <cfargument type="String" name="EventName" required=true/> <!--- Log all errors. ---> <cflog file="#This.Name#" type="error" text="Event Name: #Arguments.Eventname#" > <cflog file="#This.Name#" type="error" text="Message: #Arguments.Exception.message#"> <cflog file="#This.Name#" type="error" text="Root Cause Message: #Arguments.Exception.rootcause.message#"> <!--- Display an error message if there is a page context. ---> <cfif NOT (Arguments.EventName IS "onSessionEnd") OR (Arguments.EventName IS "onApplicationEnd")> <cfoutput> <h2>An unexpected error occurred.</h2> <p>Please provide the following information to technical support:</p> <p>Error Event: #Arguments.EventName#</p> <p>Error details:<br> <cfdump var=#Arguments.Exception#></p> </cfoutput> </cfif> </cffunction>