我有以下代码,尝试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);
}
文件存在时,没有问题,并且代码运行正常。 如果文件不存在,则尽管有catch块,这仍将引发StreamError。
我想念什么?
答案 0 :(得分:2)
您应该捕获IO错误事件,文件不存在时不会引发异常。
loader.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
,然后创建您自己的错误处理程序功能。
此处的文档中有更多详细信息: https://help.adobe.com/fr_FR/FlashPlatform/reference/actionscript/3/flash/net/URLLoader.html
如果您只是想淹没错误(因为您似乎有时知道该文件可能不存在),那么创建一个空的错误事件处理程序就足够了。