Type
Custom error pages let you control the error information that users see. You can specify custom error pages for different types of errors and handle different types of errors in different ways. For example, you can create specific pages to handle errors that could be recoverable, such as request time-outs. You can also make your error messages consistent with the look and feel of your application.
You can specify the following types of custom error message pages:
|
Description |
---|---|
Validation |
Handles server-side form field data validation errors. The validation error page cannot include CFML tags, but it can display error page variables.You can use this attribute only in the Application.cfc initialization code or on the Application.cfm page. It has no effect when used on any other page. Therefore, you can specify only one validation error page per application, and that page applies to all server-side validation errors. |
Exception |
Handles specific exception errors. You can specify individual error pages for different types of exceptions. |
Request |
Handles any exception that is not otherwise-handled. The request error page runs after the CFML language processor finishes. As a result, the request error page cannot include CFML tags, but can display error page variables. A request error page is useful as a backup if errors occur in other error handlers. |
Specifying a custom error page
You specify the custom error pages with the cferror tag. For Validation errors, the tag must be in the Application.cfc initialization code or on the Application.cfm page. For Exception and Request errors, you can set the custom error pages on each application page. However, because custom error pages generally apply to an entire application, it is more efficient to place these cferror tags in the Application.cfc or Application.cfm file also. For more information on using these pages, see Designing and Optimizing a ColdFusion Application
The cferror tag has the attributes listed in the following table:
Attribute |
Description |
---|---|
Type |
The type of error that causes ColdFusion to display this page: Exception, Request, or Validation. |
Exception |
Use only for the Exception type. The specific exception or exception category that causes the page to display. This attribute can specify any of the types described in About ColdFusion exceptions in Understanding errors. |
Template |
The ColdFusion page to display. |
MailTo |
(Optional) An e-mail address. The cferror tag sets the error page error.mailTo variable to this value. The error page can use the error. mailTo value in a message that tells the user to send an error notification. ColdFusion does not send any message itself. |
The following cferror tag specifies a custom error page for exceptions that occur in locking code and informs the error page of the e-mail address to use to send a notification each time this type of error occurs:
<cferror type = "exception" exception = "lock" template = "../common/lockexcept.cfm" mailto = "server@mycompany.com">
For detailed information on the cferror tag, see the CFML Reference.
Creating an error application page
The following table lists the rules and considerations that apply to error application pages:
Type |
Considerations |
---|---|
Validation |
|
Request |
|
Exception |
|
The following table describes the variables available on error pages: Exception error pages can also use all of the exception variables listed in the section Exception information in cfcatch blocks in Handling runtime exceptions with ColdFusion tags. To use these variables, replace the cfcatch prefix with cferror or error. For example, to use the exception message in an error page, refer to it as error.message .
In general, production Exception and Request pages should not display detailed error information, such as that supplied by the error.diagnostics variable. Typically, Exception pages e-mail detailed error information to an administrative address or log the information using the cflog tag instead of displaying it to the user. For more information on using the cflog tag, see Logging errors with the cflog tag.
Example of a request error page
The following example shows a custom error page for a request error:
<html> <head> <title>Products - Error</title> </head> <body> <h2>Sorry</h2> <p>An error occurred when you requested this page.</p> <p>Please send e-mail with the following information to #error.mailTo# to report this error.</p> <table border=1> <tr><td><b>Error Information</b> <br> Date and time: #error.DateTime# <br> Page: #error.template# <br> Remote Address: #error.remoteAddress# <br> HTTP Referer: #error.HTTPReferer#<br> </td></tr></table> <p>We apologize for the inconvenience and will work to correct the problem.</p> </body> </html>
Example of a validation error page
The following example shows a simple custom error page for a validation error:
<html> <head> <title>Products - Error</title> </head> <body> <h2>Data Entry Error</h2> <p>You failed to correctly complete all the fields in the form. The following problems occurred:</p> #error.invalidFields# </body> </html>