问题描述
我希望能够抛出一个要跟踪到跟踪输出窗口和我的flashlog.txt文件的错误,但是在错误发生后继续执行代码。在ActionScript 3中有可能吗?尝试捕获将不起作用,因为我需要将错误记录在其调用堆栈中。
解决方法
如果通过跟踪输出窗口来表示抛出错误时弹出的窗口(与Flash IDE,Flash Builder等中的跟踪窗口相对),则存在一些变通方法。基本上,您必须将调用延迟到“ 0”,以便它在自己的堆栈调用中运行。
这样的事情应该做到:
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());
,当然,只要将这段代码放在catch块中,它将在try catch中起作用
var e:Error = new Error(“Some error”);
trace(e.getStackTrace());