根据下面 Travis 的评论 - 虽然cferror
仍然支持使用该标签,但建议将 Application.cfm 转换为 Application.cfc(如果还没有)并改用该onError
方法。我在下面列出的所有限制在使用该方法时都不适用,onError
并且所有 CFML 功能都可用。这是 onError 方法的 ColdFusion 9 文档。
ColdFusion 文档中有一个完整的部分详细介绍了错误处理。但是对于您关于标签的具体问题,cferror
您需要意识到发生错误时 ColdFusion 可以执行的操作是有限制的,甚至取决于错误的类型。这是从这个页面摘录的:
下表列出了适用于错误应用程序页面的规则和注意事项:
验证
- 不能使用 CFML 标签
- 可以使用 HTML 标签
- 可以通过用数字符号 (#) 括起来来使用
Error.InvalidFields
、Error.validationHeader
和变量Error.validationFooter
- 不能使用任何其他 CFML 变量
要求
- 不能使用 CFML 标签
- 可以使用 HTML 标签
- 可以使用九个 CFML 错误变量,例如
Error.Diagnostics
,通过用数字符号将它们括起来
- 不能使用其他 CFML 变量
例外
- 可以使用完整的 CFML 语法,包括标签、函数和变量
- 可以使用九个标准 CFML 错误变量和 cfcatch 变量。使用
Error
或cferror
作为两种类型变量的前缀
- 可以使用其他应用程序定义的 CFML 变量
- 要显示任何 CFML 变量,请使用 cfoutput 标签
摘自this page关于每种异常类型的可用错误变量:
仅验证
error.validationHeader Validation message header text.
error.invalidFields Unordered list of validation errors.
error.validationFooter Validation message footer text.
请求和例外
error.diagnostics Detailed error diagnostics from ColdFusion.
error.mailTo E-mail address (same as value in cferror.MailTo).
error.dateTime Date and time when error occurred.
error.browser Browser that was running when error occurred.
error.remoteAddress IP address of remote client.
error.HTTPReferer Page from which client accessed link to page where error occurred.
error.template Page executing when error occurred.
error.generatedContent The content generated by the page up to the point where the error occurred.
error.queryString URL query string of client's request.
仅例外
error.message Error message associated with the exception.
error.rootCause The root cause of the exception. This structure contains the information that is returned by a cfcatch tag.
For example, for a database exception, the SQL statement that caused the error is in the error.RootCause.Sql variable.
For Java exceptions, this variable contains the Java servlet exception reported by the JVM as the cause of the "root cause" of the exception.
error.tagContext Array of structures containing information for each tag in the tag stack. The tag stack consists of each tag that is currently open.
error.type Exception type.
注意:如果 type = "exception",你可以用前缀 cferror 代替 Error;例如,cferror.diagnostics、cferror.mailTo 或 cferror.dateTime。