Обработка ошибок в flex - PullRequest
       2

Обработка ошибок в flex

1 голос
/ 09 февраля 2012

Загрузка файла в подсказке flex для ошибки с именем Ошибка # 2044: необработанное IOErrorEvent :. text = Ошибка № 2124: загруженный файл неизвестного типа. Что мне нужно сделать, это когда возникает эта ошибка, я хочу вызвать функцию. Поэтому я поместил блок кода, вызывающий ошибку в блоке try catch. Но когда произошла ошибка, она не приходит в улов. Ниже приведен фрагмент кода.

try {
    var loader:Loader = new Loader();
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderCompleteHandler);
    loader.loadBytes(fileReferance.data);   
}
catch(err:*) {
    functionTocall(fileReferance);
}

Как с этим справиться ..

Ответы [ 2 ]

6 голосов
/ 09 февраля 2012

Существует 2 типа ошибок во флэш-памяти: синхронные и асинхронные. Синхронные ошибки могут быть обработаны с помощью блока try..catch. Такие ошибки генерируются немедленно, когда выполнение кода завершается неудачей. Но вы не можете точно знать, когда возникнет асинхронная ошибка. Вы пытаетесь обработать асинхронную ошибку. Вот почему вы не можете поймать это так, как вы это делаете.
Вы должны добавить прослушиватель событий для IOErrorEvent .

loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
...
private function onIOError(e:IOErrorEvent) {
    ....
}
0 голосов
/ 09 февраля 2012

просто добавьте другого слушателя, который прослушивает IOErrorEvent:

var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderCompleteHandler);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loaderErrorHandler);
loader.loadBytes(fileReferance.data);

вот оно

...