【问题标题】:ColdFusion: get arguments of function which throws error in the onError-method of Application.cfcColdFusion:获取在 Application.cfc 的 onError 方法中引发错误的函数的参数
【发布时间】:2012-04-09 23:03:43
【问题描述】:

我正在扩展我的错误管理功能,它会转储一些变量范围并通过电子邮件将它们发送给我。对于这种情况,我在 Application.cfc 中使用了 onError 方法。

<CFDUMP var="#arguments.exception#" label="Error">
<CFDUMP var="#Application#" label="APPLICATION-Scope" />
<CFDUMP var="#form#" label="FORM-Scope">
<CFDUMP var="#url#" label="URL-Scope">
<CFDUMP var="#CGI#" label="CGI-Scope" />
<CFDUMP var="#session#" label="SESSION-Scope" />
<CFDUMP var="#variables#" label="VARIABLES-Scope" />

onError 将异常作为我在本示例中首先转储的参数......但是如何获取发生错误的函数的参数?例如,如果我在 Application.cfc 的 onRequest 方法中调用 UDF,例如 &lt;CFSET giveMeMyScripts("javascript-file-1","javascript-file-2") /&gt;,这是否可以得到 javascript-file-1javascript-file-2?那种超级论据?

感谢您对此的任何想法。

【问题讨论】:

  • 我认为您不知道发生错误的函数?如果您知道哪个方法引发了错误,那么您可以将其代码包装在 CFTRY 中,将 arguments 范围转储到您的 CFCATCH 中——或者将该范围复制到 request 范围并将其转储到 onError() 中-- 然后使用 CFRETHROW。我不认为onError() 方法可以访问另一个方法的arguments 范围。希望这会有所帮助。
  • 你是对的,我不知道是哪个函数导致了异常(错误管理在许多应用程序中都使用)。感谢 cfrethrow 提示 - 这对于新项目非常有用。

标签: coldfusion user-defined-functions coldfusion-9 application.cfc


【解决方案1】:

我不能 100% 确定,但您也许可以转储参数。这可能取决于你有多少功能。

通常,如果您转储所有范围和异常,您就会获得所需的所有信息。

我们几乎完全按照您的方式做,并在 application.cfc 中转储每个范围

【讨论】:

  • 我认为转储arguments 只会转储onError()arguments 范围。
【解决方案2】:

如果不在函数内设置特定的错误陷阱,不确定是否可以执行此操作。但是如果您只是调试并且需要克服错误,请将参数暂时复制到请求范围中,然后转储请求范围。

【讨论】:

  • 看起来他必须对每个方法都这样做——他不知道哪个方法抛出了错误。
  • 是的,这就是依赖注入之美有时会失去光泽的地方:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-26
  • 2013-03-11
相关资源
最近更新 更多