2014-11-21 92 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循環看起來不會執行。當我在測試中調用函數時,我在users數組中有一個項目,並且應該通過調用writeUser()將其寫入剛刪除的文件中。但是,一旦完成,我嘗試從文件中讀取用戶,我無法 - 這是空的。Try/catch問題 - 代碼沒有執行? AS3

通過在try/catch塊外放置while可以正常工作。

我只是想知道爲什麼。

編輯:好的,我想通了。當試圖刪除的文件不存在時發生問題。這在deleteFile()中導致錯誤 - 導致while不執行。 Yeesh。

+1

下一次,要麼拿出你的try/catch弄清楚發生了什麼事情,或至少跟蹤/記錄錯誤catch塊,所以你知道它拋出一個錯誤 – BadFeelingAboutThis 2014-11-21 17:21:36

回答

0

我知道你已經知道了,但爲了社區的利益,請將該解決方案作爲未來的接受答案,這樣任何瀏覽該網站的人都可以判斷是否回答(這對專家和學習者都有幫助)。回答你自己的問題的做法實際上在常見問題解答中得到了很大的提升。

當試圖刪除的文件 不存在時發生問題。這導致deleteFile()中的錯誤 - 導致 而不執行。

此外,通過LDMS的評論是非常有效的。您不應該依靠Flash Professional的調試來告訴您發生了什麼,使用trace()可以提供更多幫助。