2008-08-20 66 views
3

我使用System.Windows.Forms.WebBrowser来制作Visual Studio Start Page的视图。但是,看起来控制系统正在捕捉和处理所有的异常情况,并通过默默地沉没它们!没有必要告诉这是一个非常不幸的行为。防止WebBrowser控件吞噬异常

void webBrowserNavigating(object sender, WebBrowserNavigatingEventArgs e) 
{ 
    // WebBrowser.Navigating event handler 
    throw new Exception("OMG!"); 
} 

上面的代码将取消导航并吞下异常。

void webBrowserNavigating(object sender, WebBrowserNavigatingEventArgs e) 
{ 
    // WebBrowser.Navigating event handler 
    try 
    { 
     e.Cancel = true; 
     if (actions.ContainsKey(e.Url.ToString())) 
     { 
      actions[e.Url.ToString()].Invoke(e.Url, webBrowser.Document); 
     } 
    } 
    catch (Exception exception) 
    { 
     MessageBox.Show(exception.ToString()); 
    } 
} 

所以,我做什么(上图)是捕获所有异常,并弹出一个框,这是比默默地失败的理想更好,但仍显然远远。我希望它通过正常的应用程序失败路径重定向异常,以便它最终变成未处理的,或由应用程序从根处理。

是否有任何方法可以告诉WebBrowser控件停止沉没异常,并将它们转换为自然和预期的方式?还是有一些奇怪的方式通过本地边界抛出异常?

回答

0

我最好的选择,为什么会发生是因为有一个本地管理 - 本地边界交叉。本地部分不会正确转发托管的异常,并且没有太多可以完成的事情。

虽然我仍然希望有更好的答案。

1

我还没有看到浏览器吃例外,除非你的意思是脚本错误。脚本错误可以通过browser.ScriptErrorsSuppressed属性启用。

如果你正在谈论真正的异常,而不仅仅是脚本错误,你能告诉我们一些代码来重现问题吗?我们广泛使用了浏览器,并没有看到您描述的内容。

编辑的代码示例是不存在的时候,我问了一个代码示例