【问题标题】:ColdFusion "system has attempted to use an undefined value" Null PointersColdFusion“系统已尝试使用未定义的值”空指针
【发布时间】:2010-09-22 06:09:42
【问题描述】:

所以我在一个 Feed 上出现了这个错误,它无缘无故地停止工作。

我得到的错误是“系统已尝试使用未定义的值,这通常表示您的代码或某些系统代码中的编程错误。

空指针是未定义值的另一个名称。 "

好的,我查找空指针,Ben Nadel(上帝保佑他)有一篇关于日期变量实际上不是日期的博客文章。

所以我测试不是日期的日期。结果为真。我的日期变量是日期。很好。

关于如何进一步调试的任何建议?我已经输出了我要插入的变量,一切看起来都很好并且匹配。提要正在处理大约 55 条记录,这些记录不会产生任何影响。我还尝试了其他提要文件,以查看是否是导致问题的流氓数据,但也没有用。

干杯,

【问题讨论】:

标签: xml pointers coldfusion null debugging


【解决方案1】:

我同意将您的输出代码包装在 cftry/cfcatch 中,但可能更有用的是使用 cfdump 获取完整的 cfcatch 错误以及您的提要中引发错误的元素。

cfdump 标签上有几个非常有用的小属性。格式和输出。格式将允许您指定文本或 html 的输出类型。输出允许您将 cfdump 的内容写入文件。

<cfdump var="#cfcatch#" format="html" output="somepath\FeedCFCatch.html">
<cfdump var="#theFeedElement#" format="html" output="somepath\BrokenFeedElements.html">

能够看到实际的“损坏”元素应该可以清楚地知道问题所在。很有可能它的一个属性没有在特定的提要元素中传递。

【讨论】:

    【解决方案2】:

    您应该确保所有变量都没有问题,而不仅仅是日期。

    最简单的方法是将访问的变量包装到isDefined("varname") 检查中。

    其他解决方案是将每个迭代代码包装到 try/catch 中并记录详细信息,包括上下文和行。比如很详细的东西:

    <cflog type="error" file="blahblah" text="#cfcatch.message# [#cfcatch.detail#], error of type #cfcatch.type# in #cfcatch.TagContext[1].template# at line #cfcatch.TagContext[1].line#:#cfcatch.TagContext[1].column#. Code context: #cfcatch.TagContext[1].codePrintPlain#" />
    

    注意:Adobe ColdFusion 中的线值可能不准确,但 Railo 在这方面要好得多。

    【讨论】:

    • 谢谢 Sergii,我会试一试的。
    • Adobe ColdFusion 中的线值总是完全正确的。 CFQuery 块之类的唯一需要注意的是,错误将显示为 cfquery 标记的最后一行。
    • 我认为关于行号的评论只是意味着主编号并不必然指向您需要修复的确切代码行。通常是这样,但有时您需要深入了解一下。
    【解决方案3】:

    在将我的服务器从 mysql 4 转移到 mysql 5 后,我遇到了这个 Coldfusion 错误

    我整理了这篇小文章,介绍如何在 Adob​​e 发布热修复之前临时修复它:Read here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-14
      • 2018-12-12
      • 1970-01-01
      • 2016-11-04
      • 1970-01-01
      • 2019-12-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多