我希望能够在跟踪输出窗口和我的flashlog.txt文件中抛出一个错误,但在错误发生后继续执行代码。这在Actionscript 3中是否可行? try catch也无法正常工作,因为我需要使用其调用堆栈记录错误。
答案 0 :(得分:1)
如果通过跟踪输出窗口指的是抛出错误时弹出的窗口(与Flash IDE,Flash Builder等中的跟踪窗口相反),则会有一些hackish变通方法。基本上,您必须将调用延迟到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());
答案 1 :(得分:0)
当然它会在try catch中工作,只需将此代码放入catch块
即可var e:Error = new Error(“Some error”);
trace(e.getStackTrace());