我試圖添加一個事件監聽器到我的空中應用程序,它可以防止出現「ActionScript error」窗口,所以我可以在我的應用程序中處理錯誤。我可以找到一個little information about this from adobe。我只是不確定我應該聽什麼。flex/air動作腳本錯誤的事件監聽器
回答
這很大程度上取決於拋出的錯誤以及原因。
最好的辦法是仔細閱讀ActionScript文檔,並添加監聽到所有有錯誤的反應明確ErrorEvents(如IOErrorEvent
和SecurityErrorEvent
)。這些通常與網絡和/或文件訪問以及安全問題有關。
對於大多數其他錯誤,還有try {} catch() {} finally {}
語句。 This tutorial可能是一個很好的開始。
如果一切都失敗了,就有UncaughtErrorEvent。
但是你應該真的使用那個作爲最後的手段,而不是一個神奇的子彈 - 最好的錯誤處理是a)試圖防止首先拋出錯誤(確保所有變量都被正確初始化,測試null等),以及b)通過顯式地捕獲預期的運行時錯誤來處理預期的運行時錯誤,以保持應用程序的運行和穩定。
你有幾個選項。如您所知,對於某些異步操作,異常處理並不總是可能的。
首先,您需要知道哪些對象負責導致錯誤的異步操作。最明智的方法是將必要的錯誤事件處理程序添加到此對象。
例如,URLLoader
執行異步操作;而且它的失敗只能通過添加錯誤事件偵聽器來處理。例如:
var loader: URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, completeHandler);
loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
另一個「包羅萬象」選項是採取的Flash Player 10.1的新UncaughtErrorEvent
功能advanage。爲此,您需要將未捕獲的錯誤處理程序附加到主應用程序的加載程序;這將抓住一切!例如:
loader.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, loaderErrorHandler);
private function loaderErrorHandler(e:UncaughtErrorEvent):void {
if(event.error is Error) {
// handle error from embedded SWF
}
// suppress error dialog
e.preventDefault();
}
最後的選擇可能不是最好的方法,因爲它促進異常而不是解決和妥善處理問題的吞嚥;但它在某些特殊情況下可能很有用(嵌入SWF)。
如果您運行標準版本的Flash Player,則不會顯示該窗口。
它只能表現爲對 瀏覽器插件的調試版本,一個對話框,獨立播放器,如在創作播放器的輸出 面板的消息,並作爲一個條目日誌文件爲 Adobe Flex Builder 3.它不會在版本 Flash Player或AIR版本中顯示。
來源:here。
......這並不意味着錯誤不會被拋出,也不表示程序不會崩潰。你只是不會看到窗口。 – weltraumpirat
...是的。這就是亞當所問的。 – LoremIpsum
......實際上,不:「所以我可以在我的應用程序中處理錯誤」。 – weltraumpirat
- 1. 動作監聽器錯誤
- 2. Oxygine C++事件監聽器錯誤
- 3. Flash AS3事件監聽器錯誤
- 4. 被動事件監聽器
- 5. 事件監聽器?
- 6. Laravel監聽器監聽多個事件
- 7. Symfony的2.3事件監聽錯誤
- 8. jQuery的事件監聽器不工作
- 9. 動作監聽器
- 10. Symfony2的事件監聽器
- 11. symfony的事件監聽器
- 12. window.fetch的事件監聽器
- 13. Symfony的事件監聽器
- 14. 添加事件監聽器時出錯
- 15. 事件監聽器上錯elment
- 16. Jquery事件監聽器基本理解
- 17. 多個事件的事件監聽器
- 18. 事件監聽器不工作
- 19. 事件監聽器不工作
- 20. 事件監聽器onclick不起作用
- 21. jQuery事件監聽器不工作
- 22. 關鍵事件監聽器不工作
- 23. Esc事件監聽器不工作
- 24. onkeypress事件監聽器不工作
- 25. JavaScript - 動態創建事件監聽器
- 26. 滾動事件監聽器javascript
- 27. 動態點擊事件監聽器
- 28. Android - 事件監聽器
- 29. 刪除事件監聽器
- 30. JQuery到事件監聽器
什麼是選項,如果我使用Flex 3和空氣1.5,我不能使用UncaughtErrorEvent? – Adam
不幸的是,不幸的是,UncaughtErrorEvent至少需要AIR 2或Flex 4.我不知道任何機制可以在全球範圍內捕獲錯誤。但是我所說的其他一切都是真實的,儘管如此:徹底防止錯誤發生,並在可能的情況下捕獲預期的錯誤。如果你的代碼寫得很好,不應該有任何未被捕獲的錯誤。 – weltraumpirat