ColdFusion“系统试图使用未定义的值”Null Pointers

时间:2010-09-22 06:09:42

标签: xml pointers coldfusion null debugging

所以我在一个神奇地停止工作的Feed上出现了这个错误。

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

Null Pointers是未定义值的另一个名称。 “

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

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

有关如何进一步调试的任何建议?我输出了我正在插入的变量,所有看起来都很好并且匹配起来。该Feed正在处理大约55条记录,这些记录没有什么区别。我还尝试过其他Feed文件,看看是否是导致问题的流氓数据,但这也无效。

干杯,

3 个答案:

答案 0 :(得分:1)

我同意将输出代码包装在cftry / cfcatch中,但可能更有用的一点是使用cfdump来获取完整的cfcatch错误以及Feed中抛出错误的元素。

cfdump标记上有一些很少使用的属性非常有用。格式和输出。 format允许您指定文本或html的输出类型。输出允许您将cfdump的内容写入文件。

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

能够看到实际的“破碎”元素应该能够明确地解决问题所在。机会是一个未在特定Feed元素中传递的属性。

答案 1 :(得分:0)

您应确保所有变量都正常,而不仅仅是日期。

最简单的方法是将访问的变量包装到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在这方面要好得多。

答案 2 :(得分:0)

将服务器从mysql 4传输到mysql 5后,我遇到了这个Coldfusion错误

我已经整理了一篇关于如何临时修复它的小文章,直到Adobe发布了一个热修复:Read here