我正在處理一些Flash應用程序。現在,爲了測試它的客戶端,我可以使用Flash Player調試器版本來保存日誌並顯示錯誤消息。當它在客戶端部署時 - 它們將具有常規的Flash Player版本,這意味着如果發生錯誤,我將無法訪問錯誤消息。所以我想用它來配備一些工具,以捕獲代碼和錯誤文本中的所有跟蹤消息。至於追蹤相當簡單的消息,我只是在我的代碼中覆蓋函數,因此它會向跟蹤記錄服務器發送帶有跟蹤消息的POST請求,但是如何獲取錯誤消息?有沒有一種已知的方法或某些人可以建議的技巧?AS3,Flash:訪問代碼中的錯誤消息文本
0
A
回答
1
我發現StackOverflow上這個帖子: How to catch all exceptions in Flex?
它回答我的問題,奇怪的是,雖然我之前問谷歌搜索我沒有跑進去。
1
您可以安裝Flash作爲瀏覽器的默認的調試版本(在Chrome中,您必須禁用內置的播放器),所以如果你想測試的用戶體驗和調試,這將是理想的解決方案。
但是,要回答你的問題:沒有辦法普遍捕獲所有錯誤,並重定向它們(我知道的)。您必須提前將問題代碼封裝爲try...catch
陳述,並將該財產寄回catch
。例如:
try {
this["foo"]();
} catch (e:Error) {
trace(e);
}
在調試版本,跟蹤的價值將是TypeError: Error #1006: value is not a function.
雖然標準版將只輸出TypeError: Error #1006
,(一個特別少描述性錯誤),就是我們缺少的是在任何參考發生了錯誤。爲了得到這個,我們需要使用Error.getStackTrace()來查看調用堆棧和發生錯誤的行。在調試,這個輸出以下:
TypeError: Error #1006: value is not a function.
at Shell_fla::MainTimeline/init()[C:\Projects\shell.as:91
在標準的客戶端,我們得到了一個dissapointing null
。總之,您無法從客戶端版本獲得任何有價值的信息。
我可以給的最好的建議是用你自己的自定義錯誤報告寫下你的問題代碼。例如,捕獲IO錯誤並跟蹤其加載失敗的文件,或者如果您期待object.foo
,請首先嚐試if (object.hasOwnProperty("foo")) { // do something } else { trace("foo not found in " + object.name) }
。代碼防守。
乾杯,
相關問題
- 1. 訪問報告#錯誤文本消息
- 2. 訪問錯誤消息
- 3. Flash錯誤AS3
- 4. AS3跟蹤,特別是文本框中的錯誤消息
- 5. 訪問錯誤消息中的ng-pattern
- 6. 禁止訪問中的錯誤消息
- 7. AS3 Facebook API:訪問令牌錯誤消息
- 8. ode15s代碼中的錯誤消息
- 9. Flash中的AS3錯誤#1009
- 10. Flash/AS3:錯誤#1010
- 11. 可訪問的錯誤消息
- 12. 訪問代碼錯誤
- 13. 帶有SQL代碼的錯誤消息
- 14. 如何訪問RSpec文件中的驗證錯誤消息?
- 15. TFSBuild錯誤消息 - 訪問被阻止?
- 16. 消息錯誤:無法訪問mscorlib.dll
- 17. axios不能訪問錯誤消息
- 18. 自定義無訪問錯誤消息
- 19. 插入PHP代碼到Flash消息
- 20. 如何在AS3代碼中手動抑制Flash Builder警告消息?
- 21. gcc錯誤消息癱瘓(代碼頁或編碼問題)
- 22. 錯誤消息在HTML代碼
- 23. 我剛剛創建的文本文件的「訪問被拒絕」錯誤消息?
- 24. AS3訪問文本字段
- 25. 在Swift 3中訪問代碼錯誤
- 26. AS3字體嵌入 - 錯誤消息
- 27. 閃存AS3代碼執行順序:gotoAndStop後訪問Flash Pro中的實例()
- 28. Flash CS6 AS3錯誤1136
- 29. 如何獲得本地化的消息或錯誤代碼QBEntityCallbackImpl
- 30. Firefox 3.0中的Flash AS3 stageWidth錯誤3.6
Oooo,閃亮!我將不得不自己嘗試一下。很好的發現。 :) – Atriace
是的,這對我的Flash Player項目非常有用,但是我對AIR有問題。我僅限於使用AIR 3.1名稱空間的Flex SDK 4.6。因此,我可以用14來編譯AIR的最高swf版本,但是我需要18才能讓getStackTrace()不顯示爲空。因此,雖然我的應用程序在AIR 3.9運行時運行,但它仍然返回null :(有沒有一種方法可以定位比我的SDK更高的版本? – pokrishka
JEEZ,現在這簡直荒謬! http://www.alivelearn.net/ ?p = 623 原來,即使在沒有調試啓動器和其他所有東西的情況下,我也可以在調試模式下輕鬆地運行AIR應用程序,只需將名爲'debug'的空文件放入ApplicationDirectory/META-INF/AIR即可所有我需要的魔法。廢話,爲什麼沒有記錄/彈出每個「空調」谷歌搜索?可以節省我一大筆時間!如果您正在使用AIR應用程序,Atriace,這可能對您也有幫助,請檢查一下:) – pokrishka