Flash Actionscript 3出错后继续执行代码
我希望能够将要跟踪的错误抛出到跟踪输出窗口和flashlog.txt文件,但在错误发生后继续执行代码。这在ActionScript3中可能吗?try-catch也不起作用,因为我需要用它的调用堆栈记录错误。当然,它会在try-catch中起作用,只需将此代码放在catch块中即可Flash Actionscript 3出错后继续执行代码,flash,actionscript-3,trace,flashlog,Flash,Actionscript 3,Trace,Flashlog,我希望能够将要跟踪的错误抛出到跟踪输出窗口和flashlog.txt文件,但在错误发生后继续执行代码。这在ActionScript3中可能吗?try-catch也不起作用,因为我需要用它的调用堆栈记录错误。当然,它会在try-catch中起作用,只需将此代码放在catch块中即可 var e:Error = new Error(“Some error”); trace(e.getStackTrace()); 如果“跟踪输出窗口”指的是抛出错误时弹出的窗口(与Flash IDE、Flash Bu
var e:Error = new Error(“Some error”);
trace(e.getStackTrace());
如果“跟踪输出窗口”指的是抛出错误时弹出的窗口(与Flash IDE、Flash Builder等中的跟踪窗口相反),那么有一点黑客的解决方法。基本上,您必须延迟对
throw
的调用,以便它在自己的堆栈调用中运行
像这样的东西应该可以做到:
public static function throwLater(error:Error):void
{
setTimeout(function():void {
throw error;
},30);
}
当然,您必须将错误传递给这个函数,而不是直接抛出它
但是,如果您只是想从一个存在的错误中获取堆栈跟踪,请捕获它并获取堆栈跟踪,如图所示
另外,如果您只想在某个点上进行堆栈跟踪(但不想实际抛出错误),只需创建错误并调用getStackTrace
,而不抛出错误。在这种情况下,你并不需要一个陷阱
var error:Error = new Error();
trace(e.getStackTrace());
请注意,如果您是以发布版本发布并使用发布播放器,那么这对您毫无帮助。e、 如果播放机不是调试播放机,则getStackTrace()始终返回null。
var error:Error = new Error();
trace(e.getStackTrace());