2010-08-12 33 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 
}