2012-02-15 16 views
1

とURLLoaderクラスを使用しながら、私は時折フラッシュポップアップにこのエラーを取得しています:AS3エラー#2044:未処理のエラー:でもでIOErrorEventイベントリスナー

エラー#2044:未処理のエラーを:.テキストは=

私のコードはここにある:

private var _myLoader:URLLoader = new URLLoader(); 

    public function load():void {  
     var finalURL = http://xxxxx.com/service_staging.php/next; 

     var myRequest:URLRequest = new URLRequest(finalURL); 

     // add event listeners 
     this._myLoader.addEventListener(Event.COMPLETE, this._completeHandler); 
     this._myLoader.addEventListener(Event.OPEN, this._openHandler); 
     this._myLoader.addEventListener(ProgressEvent.PROGRESS, this._progressHandler); 
     this._myLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, this._securityErrorHandler); 
     this._myLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS, this._httpStatusHandler); 
     this._myLoader.addEventListener(IOErrorEvent.IO_ERROR, _ioErrorHandler); 

     try { 
      this._myLoader.load(myRequest); 
     } catch (_error:SecurityError) { 
      Logger.error('JSONRequest.as - catch: A SecurityError has occurred:', _error); 

     } catch(_error:IOErrorEvent) { 
      Logger.error("JSONRequest.as - catch: IOErrorEvent:", _error);  

     } catch(_error:Error) { 
      Logger.error("JSONRequest.as - catch: Error catch: ", _error); 
     } 
    } 

    //----------------------------------------------------------  

    private function _completeHandler(event:Event):void {   
     Logger.info('JSONRequest.as - _completeHandler()'); 


     Logger.info('this._myLoader.data', this._myLoader.data); 

     // decode the object 
     this._JSONObject = JSON.decode(this._myLoader.data); 

     // dispatch the complete event 
     this.dispatchEvent(new Event(Event.COMPLETE)); 
    } 

    //----------------------------------------------------------  

    private function _ioErrorHandler(_error:IOErrorEvent):void { 
     Logger.error('JSONRequest.as - _ioErrorHandler()'); 

     dispatchEvent(new ErrorEvent(ErrorEvent.ERROR)); 
    } 

    //---------------------------------------------------------- 

    private function _securityErrorHandler(_event:SecurityErrorEvent):void { 
     Logger.info("JSONRequest.as - _securityErrorHandler(): ", _event); 

     dispatchEvent(new ErrorEvent(ErrorEvent.ERROR)); 
    } 

    //---------------------------------------------------------- 

    private function _openHandler(event:Event):void { 
     Logger.info("JSONRequest.as - openHandler: " + event); 
    } 

    //---------------------------------------------------------- 

    private function _progressHandler(event:ProgressEvent):void { 
     Logger.info("JSONRequest.as - progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal); 
    } 

    //---------------------------------------------------------- 

    private function _httpStatusHandler(event:HTTPStatusEvent):void { 
     Logger.info("JSONRequest.as - httpStatusHandler: " + event); 
     Logger.info("status: " + event.status); 
    } 

    //---------------------------------------------------------- 

    public function get JSONObject():Object { 
     return this._JSONObject; 
    } 

    //---------------------------------------------------------- 

そこサービスからJSONデータを取得問題であるが、このエラーは、まだ私はそれを聞いていていてもポップアップように見える場合、私はすでに処理します。

アイデアをいただければ幸いです。

ありがとうございました。

+0

私はこの同じ問題を抱えています。すべてのイベントを処理していますが、ioErrorポップアップが表示されます。これは、主に私のインターネット接続が死んだときに起こります(私は電話アプリをテストしており、インターネット接続は不自由です)。誰かが解決策を持っているなら、それはすばらしいでしょう! – DoomGoober

答えて

2

あなたはURLLoaderクラスから未処理の例外IOErrorをキャッチする

this._myLoader.contentLoaderInfo.addEventListener(Foo.BAR, onFooBar); 
+0

申し訳ありません - 含まれている必要があります: private var _myLoader:URLLoader = new URLLoader(); URLLoaderにcontentLoaderInfoプロパティがないと思います。私はリクエストしており、ほとんどの場合JSONオブジェクトを受け取っています。 – Oli

+0

申し訳ありませんが、URLLoaderには 'contentLoaderInfo'プロパティがありません。 –

+0

True @NicolasSiver、私はURLLoaderではなくLoaderクラスを考えていたに違いありません。 UncaughtErrorEventは10.1時点でしか利用できませんでしたが、最近はベースラインターゲットとして想定するのが比較的安全ですが、数年前にはなかったかもしれません(例:クライアントがFP9サポートを要求します) – scriptocalypse

1

を_myLoader.contentLoaderInfoためにそれらのリスナーを追加する必要があり、あなたがUncaughtErrorEventsの助けが必要になります。

loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, onGlobalError); 


private function onGlobalError(e:UncaughtErrorEvent):void { 
    e.preventDefault(); 
    trace("ERROR: " + e.toString()); 
} 

//Trigget it... 
var urlLoader: URLLoader = new URLLoader(); 
urlLoader.load(new URLRequest("somewhere/nowhere")); 
0

まず第一に、あなたは上のより多くの情報が必要このエラー...スタック、ErrorEventのターゲットなど

UncaughtErrorEvent.UNCAUGHT_ERRORをリッスンしましたか? これは未処理のErrorEventエラー などのキャッチされていないエラーをキャッチして、何をするかを選択できるようにします。

私が最初に(直後に自分のエラー処理コードを追加したブレークポイントvar errorEvent:ErrorEvent = event.error as ErrorEvent;

を置くためにうまくいけば、この段階で、フィックス、または少なくとも回避策があるでしょう、できるだけ多くのデバッグ情報を取得することをお勧めしますこのブレークポイント )

関連する問題