0

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

4

2 回答 2

1

如果跟踪输出窗口是指在抛出错误时弹出的窗口(与 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());
于 2011-04-19T01:59:55.090 回答
0

当然它可以在 try catch 中工作,只需将此代码放在 catch 块中

var e:Error = new Error(“Some error”);
trace(e.getStackTrace());
于 2011-04-19T01:19:57.983 回答