當我在ReportErrorToDOM
(App.xaml.cs
)中看到System.Windows.Browser.HtmlPage.Window.Eval
(這是邪惡)的電話時,這表明它與onSilverlightError
沒有任何關係。那麼什麼樣的基於JavaScript的場景調用onSilverlightError
? onSilverlightError
什麼時候肯定會需要?通常,Silverlight錯誤處理約定是什麼?Silverlight錯誤處理約定:onSilverlightError和ReportErrorToDOM()之間沒有關係?
這是Erik Monk一個非常重要的意見,但需要更多的細節:
有2種在Silverlight終端錯誤 的。 1)管理錯誤(點擊 管理的 Application_UnhandledException 方法)。請注意,有些錯誤可能不是 甚至可以達到這一點。如果管理的 基礎架構無法加載 某些原因(內存不足錯誤 也許...),您將不會收到此類 錯誤。不過,如果你能得到它,你可以使用Web服務(或CLOG 項目)將其傳回 服務器。 2)Javascript錯誤。
當您在網頁上實例化Silverlight插件時,您可以選擇使用JavaScript幫助程序文件Silverlight.js。 Silverlight.js文件還爲OnError處理程序參數提供了一個默認事件處理程序。當您將未指定的CreateObject調用中的onError參數或null(使用Silverlight.js函數)時,在遇到本機腳本錯誤時,會調用Silverlight.js中定義的默認處理函數。 – rasx 2009-10-31 17:20:55
Silverlight.js中定義的默認OnError事件處理函數顯示許多錯誤的對話框。您可能不希望部署具有此行爲的生產代碼或網站。 OnError被使用並且將被調用用於許多異步錯誤,這些錯誤無法從基於Silverlight的實時應用程序的實時部署中完全消除。 – rasx 2009-10-31 17:21:58
如果同步方法調用失敗且方法調用位於try/catch塊中,則將「ECMAScript Language Specification」(ECMA-262)中所述的錯誤對象傳遞給catch塊,並且不會引發onError事件。由於不會引發onError事件,因此不會調用onError事件處理程序。如果同步方法調用失敗且方法調用不在try/catch塊內,則會引發onError事件並將其路由到Silverlight插件的onError處理程序。發送給onError處理程序的事件參數中的ErrorType設置爲RuntimeError。 – rasx 2009-10-31 17:22:57