如何在 ActionScript 中捕获流错误

Posted

技术标签:

【中文标题】如何在 ActionScript 中捕获流错误【英文标题】:How to catch Stream Error in ActionScript 【发布时间】:2019-03-27 08:24:04 【问题描述】:

我有以下代码,它尝试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】:

你应该捕获IO错误事件,当文件不存在时不会抛出异常。

loader.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);

然后创建自己的错误处理函数。

这里的文档中的更多详细信息: https://help.adobe.com/fr_FR/FlashPlatform/reference/actionscript/3/flash/net/URLLoader.html

如果您只是想消除错误(因为您似乎知道文件有时可能不存在),那么创建一个空的错误事件处理程序就足够了。

【讨论】:

如果我只想淹没错误怎么办?我知道该文件有时不存在。

以上是关于如何在 ActionScript 中捕获流错误的主要内容,如果未能解决你的问题,请参考以下文章

在 Flex/Actionscript 中捕获视频缩略图

如何在 ActionScript 中找到实时 RTMP 流何时停止?

如何在 Actionscript 3 中播放与 SWF 不在同一目录中的声音?

协程 shell_exec 如何捕获标准错误流

如何从可以由 Actionscript NetStream 播放的原始 h264 生成 FLV 流?

redux-observable 无法从发出的动作中捕获错误,错误会停止动作流