Coldfusion:如何使用cfthrow转储参数作用域?

Coldfusion:如何使用cfthrow转储参数作用域?,coldfusion,Coldfusion,表单提交后,我调用一个控制器方法,该方法在cfc中运行orm EntitySave。我希望在通过ORM保存数据之前先转储参数,以便直观地验证这些确实是我希望保存在数据库中的值。 所以当我用这个的时候 <cfthrow message="value = #arguments#"> 我知道您不允许对复杂对象执行此操作,因此在这些情况下,我会使用,但我找不到在中转储的方法。我相信有更好的方法来实现这一点。我还试着给自己写了一封,效果非常好,但是发邮件需要一两分钟。如有任何建议,将不胜感激

表单提交后,我调用一个控制器方法,该方法在cfc中运行orm EntitySave。我希望在通过ORM保存数据之前先转储参数,以便直观地验证这些确实是我希望保存在数据库中的值。 所以当我用这个的时候

<cfthrow message="value = #arguments#">

我知道您不允许对复杂对象执行此操作,因此在这些情况下,我会使用
,但我找不到在
中转储的方法。我相信有更好的方法来实现这一点。我还试着给自己写了一封
,效果非常好,但是发邮件需要一两分钟。如有任何建议,将不胜感激。我目前正在检查验证。您可以将其序列化:

<cfthrow message="value = #serializeJson(arguments)#">

但我认为你不希望那种东西出现在屏幕上


如果我是你,我会记录它(同样的概念,只是
之前,把参数放在日志条目中,在
中简单解释一下错误(您还应该使用TYPE属性,以便后续处理引发的异常。

您可以尝试将其转储到文件中,看看是否满足您的需要,而不是将其抛出:

<cfdump var="#arguments#" output="C:\dump.html" format="html">


如果需要中止(就像抛出一样),可以将中止添加到标记的末尾,

您可以执行以下操作以使用



然而,需要更多的代码,并且不像上面Adam Cameron的回答那样优雅。

如果这是一个永久性的解决方案(不仅仅是临时调试),调查类似的内容,通过web服务记录错误,然后通过web应用程序浏览/分析聚合报告。与@PeterBoughton的评论相同,您也可以查看。感谢@ss992,这给了我一个很好的视觉效果。我是否可以预先编写日志而不是追加?我不知道使用
cfdump
,但为了快速解决问题,您可以将输出文件设置为时间戳,即
output=“C:\dump-#now()#.html”
或类似的东西。你会堆积很多转储文件,但它们比单个文件更容易管理。感谢Adam,你的答案也起了作用。一票通过,我刚刚下载了一个Supreme Text插件来美化json。我最近开始使用这种方法将复杂值写入日志文件,而且它在我拥有的一些函数可以接受简单的值或复杂的对象,我不再需要太在意我得到了什么。
<cfdump var="#arguments#" output="C:\dump.html" format="html">
<cfsavecontent variable="arguments_dump">
    <cfdump var="#arguments#" />
</cfsavecontent>
<cfthrow message="#arguments_dump#" />