2012-02-15 5 views
1

나는 가끔 플래시 팝업이 오류가 점점 오전 :AS3 오류 # 2044 : 처리되지 않은 오류 : 심지어 의해 IOErrorEvent 이벤트 리스너은 URLLoader를 사용하는 동안

오류 # 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

당신은 UncaughtErrorEvents의 도움이 필요합니다,은 URLLoader에서 처리되지 않은 IO 오류를 잡으려고

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 버전으로 만 제공되었습니다. 요즘은 기준선으로 간주하기에 비교적 안전하지만 몇 년 전만해도되지 않았을 수 있습니다 (예 : 클라이언트가 FP 9 지원을 요청 함) – scriptocalypse

1

을 _myLoader.contentLoaderInfo하는 그 리스너를 추가한다 : 모든

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 수신을 시도해 보셨습니까? 이 내용은 다음 샘플에 설명되어 있습니다. http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/LoaderInfo.html#uncaughtErrorEvents 처리되지 않은 ErrorEvent 오류 을 포함하여 잡히지 않은 오류를 잡아서 처리 할 방법을 선택할 수 있습니다.

것은 내가 처음 직후 코드를 오류 처리를 추가 (당신은 수정을해야합니다이 단계에서 희망 중단 점 var errorEvent:ErrorEvent = event.error as ErrorEvent;

을 넣어, 또는 적어도 해결하기 위해 가능한 한 많은 디버그 정보를 얻기 위해 추천 이 중단 점 )