3

出于某种原因,一段代码在*.cfm页面上运行良好,并且在 a中运行良好*.cfc,现在在检测到错误时抛出错误。

错误是:

Element SQL is undefined in CFCATCH. 

被抛出的代码块如下所示:

<cfcatch type="database">
    <cfset errorMessage = "
        <p>#cfcatch.message#</p>
        <p>Please send the following to a developer:</p>
        <p>#cfcatch.SQL#</p> <--- ERROR HERE
        <p>#cfcatch.queryError#</p>
        <p>#cfcatch.Where#</p>">
    some other stuff
</cfcatch>

有什么想法吗?

更新

使用@BenKoshy 的建议,我修改了我的<cfcatch>声明。

还记得KISS吗?保持简单愚蠢

使用他的方法然后对其进行修改,我得到的数据比我打算使用的要多,所以我选择了一个简单的版本,它像宣传的那样工作。

<cfif isDefined("cfcatch.message")>
  <cfset errorMessage = errorMessage & "<p>#cfcatch.message#</p>">
</cfif>
<cfif isDefined("cfcatch.SQL")>
    <cfset errorMessage = errorMessage & "<p>Please send the following to a developer:</p><p>#cfcatch.SQL#</p>">
</cfif>
<cfif isDefined("cfcatch.QueryError")>
    <cfset errorMessage = errorMessage & "<p>#cfcatch.queryError#</p>">
</cfif>
<cfif isDefined("cfcatch.Where")>
    <cfset errorMessage = errorMessage & "<p>#cfcatch.Where#</p>">
</cfif>

又好又简单,而且很有效。吻

4

1 回答 1

6

只是表示错误数据不包含 SQL 语句。不应假设所有错误都存在该变量:

<cfif isDefined("cfcatch.sql")>
     <p>#cfcatch.SQL#</p>
 </cfif>

是容易修复。可能最好像这样循环遍历结构:

<cfparam name="errorMessage" default="">
<cfloop collection="#cfcatch#" item="this">
    <cfset errorMessage = errorMessage & "<p>#cfcatch[this]#</p>">
</cfloop>
于 2012-04-26T15:47:10.063 回答