Coldfusion 如何在应用程序崩溃或错误时获取函数名称和行号

Coldfusion how to get function name and line number when application crashed or error

我正在处理我的遗留系统旧代码 coldfusion,有没有一种方法可以在 application.cfc 中定义 cfcatch 并使用

捕获我的应用程序的所有错误

应用程序开发人员在任何地方都没有发现任何错误 code.i 确实在某些地方的代码中插入了 cfcatch,但还有很多工作要做,而且由于生产原因,我不想修改太多代码.

我正在将 cfcatch 插入数据库并向开发团队发送电子邮件。因为系统正在生产中。

您可以使用 cferror tag, or onError 将所有错误定向到给定的 page/function。

如果您使用cferror,异常将在error变量中传递。如果你使用OnError,它是一个参数。

为了帮助您,我自己的错误电子邮件包括以下内容。您会注意到我们有特殊的处理方式来帮助指出空格可能已传递到 sql 整数字段的位置,这种情况发生的频率比我承认的要高。

An error occurred: http://#cgi.server_name##cgi.script_name#?#cgi.query_string#<br />
Time: #dateFormat(now(), "short")# #timeFormat(now(), "short")#<br />

<!--- Smarter error catching for form fields --->   
<cfif (error.message contains "Invalid data '' for CFSQLTYPE CF_SQL_INTEGER") and isdefined("form")>
    <!--- This stores a list of the Id fields --->
    <cfloop collection="#form#" item="thisField">
        <!--- Get the last two characters of the field name --->
        <cfset lastTwoChars = right(thisField, 2)>
        <!--- Get the value of the field --->
        <cfset thisFieldValue = evaluate('form.#thisField#')>
        <!--- Check to see if this is an Id field and if it's value is blank. --->
        <cfif lastTwoChars eq 'Id' and thisFieldValue eq ''>
            <h3 style="font-weight: bold; color: red">#thisField# is blank and it's possibly an integer field.</h3>
        </cfif>
    </cfloop>
</cfif>

<cfdump var="#error#" label="Error">


<br/>
<cfdump var="#form#" label="Form">
<br/>
<cfdump var="#url#" label="URL">
<br/>
<cfdump var="#session#" label="session">