我们都得到“类型错误#1009无法访问空对象引用的属性或方法”现在,然后 - 没什么大不了的,但有时难以调试。
闪存让你调用堆栈(这是一个开始),但保留这些给你找出其中的空对象是-是否有可能找出究竟该参考引发错误?
鉴于以下(容易出错)功能:
function nullObjectReferenceError():void
{
var obj:Object;
var prop:* = obj.nonExistentProperty;
}
而不是仅仅从类型错误调用堆栈,我想追查是这样的:“ 不能在obj.nonExistentProperty访问空对象引用的属性或方法 ” -这甚至可能吗?
如果选中允许调试下发布设置在Flash IDE,它可以让你在你的代码导致错误的行号。
显而易见的解决方案是停止在第一位置使用这种通用的易出错代码。 你永远不应该使用“*”型,几乎不应该使用“对象”型。
为了赶上它在运行时,你总是可以说:
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);
TypeError
,如果你抓住它不会给你任何信息。
据我所知,目前还没有已知的方法来实现这一目标(即其目标投掷了错误)。
你最好的选择将是设置在函数的开始一个断点,并手动调查的变量。 这就是我做的,而且工作很适合我。
文章来源: AS3 -TypeError #1009 - any easy way to find out *which* object reference is null?