2010-08-12 32 views
0
[ScriptableMember()] 
public void HighlightEditsForCode(object xml) 
{ 
    //Do Stuff 
} 

我有一個可編寫腳本的成員函數。我從這個函數中拋出一個異常。例外和腳本成員

它不會觸發事件application.UnhandledException ...

東西必須處理該事件...我怎樣才能防止這種情況有unhandledexception事件叫什麼名字?

或者至少避免讓我的應用程序崩潰並顯示一個JavaScript錯誤?

回答

1

你不能真的阻止這種行爲,錯誤不會從.NET的角度去「未處理」。在Javascript和.NET之間的邊界將會有一個錯誤處理程序,這裏的.NET錯誤被「處理」,因爲它被轉換爲Javascript錯誤。這個JavaScript錯誤然後在腳本引擎中引發。

解決此問題的唯一方法是始終在標記爲ScriptableMember的任何內容中包含try..catch處理程序。如果這樣的成員也從.NET代碼中調用,那麼創建代理成員只是由腳本調用。示例: -

[ScriptableMember(ScriptAlias="HighlightEditsForCode")] 
public void HighlightEditsForCodeScript(object xml) 
{ 
    try 
    { 
    HighlightEditsForCode(object xml); 
    } 
    catch(e) 
    { 
    CallSomeEquivalentToUnhandledError(e); 
    } 
} 

public void HighlightEditsForCode(object xml) 
{ 
    // Do Stuff 
}