在Actionscript 3中出错后继续执行代码

时间:2011-04-19 01:00:43

标签: flash actionscript-3 trace flashlog

我希望能够在跟踪输出窗口和我的flashlog.txt文件中抛出一个错误,但在错误发生后继续执行代码。这在Actionscript 3中是否可行? try catch也无法正常工作,因为我需要使用其调用堆栈记录错误。

2 个答案:

答案 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());