2014-11-21 4 views
0
private function rewriteQueue():void 
{ 
    try{ 
     var file:File = File.applicationStorageDirectory.resolvePath(DATA_FILE_NAME); 
     file.deleteFile(); 

     while (users.length) { 
      var aUser:Object = users.shift(); 
      writeUser(aUser); 
     } 

    }catch (e:Error) { 
    }   
} 

위의 while 루프는 실행되지 않습니다. 테스트에서 함수를 호출 할 때 사용자 배열에 하나의 항목이 있고 writeUser()를 호출하여 잠시 동안 삭제 된 파일에 기록해야합니다. 그러나 일단 이것이 끝나면 내가 할 수없는 파일에서 사용자를 읽으려고합니다. 그것은 비어 있습니다.시도/catch 문제 - 코드가 실행되지 않습니까? AS3

while을 try/catch 블록 외부에 배치하면 정상적으로 작동합니다.

나는 이유를 알고 싶다.

편집 : 좋아, 알아 냈어. 이 문제는 삭제하려는 파일이 존재하지 않을 때 발생합니다. 이로 인해 deleteFile()에 오류가 발생하여 while을 실행하지 못하게합니다. 예지.

+1

다음 번에 try/catch를 사용하여 현재 진행중인 작업을 파악하거나 catch 블록에서 오류를 추적/기록하여 오류가 발생하는 것을 확인하십시오. – BadFeelingAboutThis

답변

0

나는 이미 알아 냈지만 커뮤니티를 위해서 미래에 받아 들여지는 대답으로 솔루션을 제공하여 사이트를 탐색하는 모든 사람들이 답변을 받았는지 여부를 알 수 있습니다 (전문가와 학습자 모두에게 도움이 됨). 자신의 질문에 답하는 연습은 실제로 FAQ에서 상당히 강하게 승격됩니다.

삭제하려는 파일이 에없는 경우 문제가 발생했습니다. 이로 인해 deleteFile()에 오류가 발생하여 실행하지 않는 동안 이 발생합니다.

또한 LDMS의 주석은 매우 유효합니다.을 사용하면 무슨 일이 일어나고 있는지 Flash Professional의 디버그에 의존해서는 안됩니다.

관련 문제