例外和Scriptablemember

时间:2010-08-12 21:31:21

标签: silverlight

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

我有一个可编写脚本的成员函数。我从这个函数中抛出一个异常。

它不会触发application.UnhandledException事件......

必须处理此事件...如何防止这种情况并调用unhandledexception事件?

或者至少避免我的应用程序崩溃并显示javascript错误?

1 个答案:

答案 0 :(得分: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
}