出于某种原因,在*.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
答案 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>