2013-11-25 50 views
1

從Flash Builder中調試時工作的內容可能在導出發行版本時工作方式不同嗎?發佈版本的行爲與從Flash Builder進行調試的行爲有所不同

舉例來說,我有這個:

private function getErrorText(error:Error):String{ 
      var result:String = ""; 
      result = "FehlerArt: " + error.name + "//" + (error.message as String).substring(0, (error.message as String).indexOf(":")) + "\n"; 
      result += "Fehler: " + (error.message as String).substring((error.message as String).indexOf(":") + 1) + "\n"; 
      result += "Komponente: " + getComponentID(); 
      return result; 
     } 

當我使用調試器的IM Flash Builder中執行此,我得到正確的字符串:

FehlerArt: ReferenceError//Error #1065 
Fehler: Variable mistake is not defined. 
Komponente: button1 

但如果我不使用同樣的事情我得到這個:

FehlerArt: ReferenceError// 
Fehler: Error #1065 
Komponente: button1 

所以它看起來像錯誤分類中的消息在執行發佈版本時,s是不同的格式,還有其他的例子。

那麼是否有某種配置,我必須設置使發佈執行與調試執行相同?

UPDATE

雖然從divillysausages解決方案的工作,它不會顯示具體的信息,例如,如果有一個「沒有定義變量的錯誤」,它會說「變量/ N沒有定義」,而且如果代碼很大,這對用戶來說會是一個問題。那麼有沒有辦法將應用程序導出爲調試版本?

我試圖將其導出爲發佈版本,然後用SWF在我的bin-debug目錄中替換安裝目錄中的SWF,並且該應用程序可以正常工作,但如果出現錯誤,它仍不會顯示有關錯誤的所有信息發生

回答

2

這是預期的行爲 - 您在調試模式下獲得的消息已完全充實,僅因爲所有調試符號都可用。在發佈中,它們因速度原因被刪除。

你可以在這裏查看關於錯誤的文檔:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Error.html但它幾乎指定它的主要用途是在調試模式下(完整消息,錯誤對話框,完整堆棧跟蹤等)。

一般來說,在這種情況下你做了什麼是捕捉錯誤,然後使用任何已有的日誌記錄系統記錄消息。這樣您可以根據您的確切需求自定義消息。你可以在這裏檢查出所有運行時錯誤ID:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/runtimeErrors.html

更新

我寫的擦傷上面的鏈接動態顯示運行時錯誤的一類,所以你不需要寫出來的自定義消息每一個。你可以在這裏得到它:http://divillysausages.com/blog/making_sense_of_as3_runtime_errors_at_runtime

還包括在包含當前所有的錯誤(今天的)

+0

所以一個XML文件,你的建議我寫這取決於錯誤代碼,甚至提供我自己的錯誤信息在發佈版本?是否有可能在發佈中打開完整的錯誤消息選項?在我的應用程序中,用戶可以編寫並運行他自己的代碼,當他發生錯誤時,就會彈出一個錯誤消息,所以你看看我自己的消息對於每個錯誤的寫法是多麼令人討厭?但是,如果沒有其他方式,我會這樣做 –

+0

我不完全確定您可以導出發佈版本啓用調試符號;否則它只是一個調試版本:)所以你可以這樣做,或者稍微等一下,因爲你的問題讓我覺得應該可以實時地抓取錯誤頁面。我應該可以在今天上傳代碼 – divillysausages

+0

檢查URL的更新答案代碼 – divillysausages

相關問題