Как отловить ошибку потока в ActionScript - PullRequest
0 голосов
/ 23 октября 2018

У меня есть следующий фрагмент кода, который пытается GET публично размещенный (AWS S3) файл.

private function ShowS3Message():void
{
    // Attempt to download file from AWS
    var descriptor:XML = NativeApplication.nativeApplication.applicationDescriptor;
    var ns:Namespace = descriptor.namespaceDeclarations()[0];
    var url:String = "https://s3.amazonaws.com/some-url/file-" + descriptor.ns::versionLabel.split(".").join("-") + ".txt";
    var urlRequest:URLRequest = new URLRequest(url);

    // Set up callback function
    try{
        var loader:URLLoader = new URLLoader(); 
        loader.addEventListener(Event.COMPLETE, awsFetchCallback);                      
        loader.load(urlRequest);
    }catch(error:Error){}   
}

Это функция обратного вызова:

/**
 * Callback function for AWS message file
 */
private function awsFetchCallback(event:Event):void
{
    var data = event.target.data;

    // show dialog
    var msb:InformationMessageBox = new InformationMessageBox();
    msb.mText = data;
    msb.open(this, true);
}

Когда файл существует, проблем нет, и код работает нормально.Когда файл не существует, выдается StreamError, несмотря на блок catch.

что мне не хватает?

1 Ответ

0 голосов
/ 23 октября 2018

Вы должны зафиксировать событие ошибки ввода-вывода, если не существует исключения, если файл не существует.

loader.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);

, а затем создать собственную функцию обработчика ошибок.

подробности в документе здесь: https://help.adobe.com/fr_FR/FlashPlatform/reference/actionscript/3/flash/net/URLLoader.html

Если вы просто хотите утопить ошибку (потому что вы, кажется, знаете, что иногда файл может не существовать), достаточно создать пустой обработчик события ошибки.

...