Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 AS3-TypeError#1009-有没有简单的方法来找出*哪个*对象引用是空的?_Actionscript 3_Error Handling_Object_Null - Fatal编程技术网

Actionscript 3 AS3-TypeError#1009-有没有简单的方法来找出*哪个*对象引用是空的?

Actionscript 3 AS3-TypeError#1009-有没有简单的方法来找出*哪个*对象引用是空的?,actionscript-3,error-handling,object,null,Actionscript 3,Error Handling,Object,Null,我们都会时不时地听到“TypeError#1009无法访问空对象引用的属性或方法”,这没什么大不了的,但有时会让调试感到沮丧 Flash为您提供了调用堆栈(这是一个开始),但让您自己来确定null对象的位置—是否有可能准确地找出哪个引用抛出了错误 给定以下(易出错)函数: function nullObjectReferenceError():void { var obj:Object; var prop:* = obj.nonExistentProper

我们都会时不时地听到“TypeError#1009无法访问空对象引用的属性或方法”,这没什么大不了的,但有时会让调试感到沮丧

Flash为您提供了调用堆栈(这是一个开始),但让您自己来确定null对象的位置—是否有可能准确地找出哪个引用抛出了错误

给定以下(易出错)函数:

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

除了TypeError中的调用堆栈之外,我还想跟踪类似这样的内容:“无法访问位于obj的null对象引用的属性或方法。不存在属性”“-这可能吗?

TypeError
如果捕获它,将不会为您提供更多信息

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


您最好在函数的开头设置一个断点,并手动研究变量。这就是我所做的,对我来说效果相当好。

如果在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);

我想了很多-我使用TextMate作为我的代码编辑器,所以设置断点有点麻烦-我希望有其他解决方案-越来越近。。。仍然无法获取对象,但行号使查找更容易。您知道“允许调试”是否会对安全性或性能产生任何影响吗?我将此标记为正确的-它似乎是最接近可用解决方案的东西。它只应在您测试/调试时使用。实际上,davr,我之所以这样问是因为我经常被要求调试其他开发人员编写的代码。。。但这通常是个好建议。