2011-04-19 47 views
0

我希望能够抛出一个错误以追踪到跟踪输出窗口和我的flashlog.txt文件,但在错误发生后继续执行代码。这在Actionscript 3中可能吗? try catch不会工作,因为我需要用它的调用堆栈记录错误。在Actionscript 3中出错后继续执行代码

回答

1

如果跟踪输出窗口,你的意思是弹出时,则抛出Error(而不是在窗口Flash IDE中的跟踪窗口,Flash Builder等),有一些问题可以解决。基本上,您必须将呼叫延迟到throw,以便它在自己的堆栈调用中运行。

像这样的东西应该这样做:

public static function throwLater(error:Error):void 
    { 
     setTimeout(function():void { 
      throw error; 
     },30); 
    } 

当然你得错误传递给这个函数,而不是直接把它扔。

但是,如果您只想从存在的错误中获取堆栈跟踪,那么请抓住它并获取堆栈跟踪,如The_asMan所示。

 try { 
      thisFunctionMightThrow() 
     } catch (e:Error) { 
      trace(e.getStackTrace(); 
     } 

另外,如果你只是想有一些点堆栈跟踪(但不希望实际抛出一个错误),刚刚创建的错误,并调用getStackTrace未抛出。在这种情况下,你并不需要捕获。

 var error:Error = new Error(); 
     trace(e.getStackTrace()); 
0

当然,这将在一个尝试捕捉的工作只是把这个代码在catch块

var e:Error = new Error(“Some error”); 
trace(e.getStackTrace()); 
+0

请注意,如果您发布为发布版本并使用发布播放器,则完全无法帮助您。如果玩家不是调试玩家,则e.getStackTrace()总是返回null。 – scriptocalypse 2011-04-19 03:33:52

相关问题