CFCATCH在CFC中抛出错误

时间:2012-04-26 15:26:50

标签: coldfusion cfc

出于某种原因,在*.cfm页面上正常工作但在*.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>声明。

记得K.I.S.S.?保持简单愚蠢

使用他的方法然后修改它,我得到的数据比我使用的要多,所以我选择了一个简单的版本,它就像宣传的一样。

<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>

美观,简单,有效。 KISS

1 个答案:

答案 0 :(得分: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>