Продолжение выполнения кода после ошибки в Actionscript 3 - PullRequest
0 голосов
/ 19 апреля 2011

Я хочу иметь возможность выдать ошибку, которая будет отслеживаться в окне вывода трассировки и в моем файле flashlog.txt, но продолжить выполнение кода после ошибки. Возможно ли это в ActionScript 3? Попытка перехвата также не будет работать, потому что мне нужно, чтобы ошибка регистрировалась с помощью стека вызовов.

Ответы [ 2 ]

1 голос
/ 19 апреля 2011

Если под окном вывода трассировки вы имеете в виду окно, которое появляется при возникновении ошибки (в отличие от окна трассировки в IDE Flash, 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());
0 голосов
/ 19 апреля 2011

Конечно, это будет работать при попытке перехвата, просто поместите этот код в блок перехвата

var e:Error = new Error(“Some error”);
trace(e.getStackTrace());
...