AS3 -TypeError#1009 - 找出*哪个*对象引用为空的任何简单方法?

时间:2009-10-05 03:07:58

标签: actionscript-3 error-handling object null

我们都得到“TypeError#1009无法访问空对象引用的属性或方法” - 然后 - 没什么大不了的,但有时候调试很令人沮丧。

Flash为你提供了调用堆栈(这是一个开始),但是由你来决定空对象的位置 - 是否有可能找出究竟哪个引用正在抛出错误?

鉴于以下(易出错)功能:

function nullObjectReferenceError():void
    {
        var obj:Object;
        var prop:* = obj.nonExistentProperty;
    }

我不想仅仅使用TypeError中的调用堆栈,而是想跟踪类似的内容:“无法访问 obj.nonExistentProperty 的空对象引用的属性或方法em>“ - 这甚至可能吗?

3 个答案:

答案 0 :(得分:4)

如果在Flash IDE中选中“发布设置”下的“允许调试”,它会在代码中为您提供导致错误的行号。

答案 1 :(得分:2)

显而易见的解决方案是首先停止使用这种通用的容易出错的代码。你永远不应该使用'*'类型,几乎从不使用'对象'类型。

要在运行时捕获它,你总是可以说:

if(obj == null)
  throw new Error("null obj passed in!!");

if(obj.nonExistentProperty == null)
  throw new Error("obj doesn't have the prop!! the obj was: "+obj);

答案 2 :(得分:0)

如果你发现它,

TypeError将不会再向你提供任何信息。

据我所知,没有已知的方法来实现这一点(即哪个对象引发了错误)。

您最好的选择是在函数开头设置断点并手动调查变量。这就是我的工作,对我来说效果相当好。