.net 防止WebBrowser控件吞咽异常

.net 防止WebBrowser控件吞咽异常,.net,winforms,exception-handling,webbrowser-control,.net,Winforms,Exception Handling,Webbrowser Control,我正在使用System.Windows.Forms.WebBrowser,以查看Visual Studio的起始页。然而,控件似乎正在通过静默地消除异常来捕获和处理所有异常!不用说,这是一种非常不幸的行为 void webBrowserNavigating(object sender, WebBrowserNavigatingEventArgs e) { // WebBrowser.Navigating event handler throw new Exception("OMG

我正在使用
System.Windows.Forms.WebBrowser
,以查看Visual Studio的起始页。然而,控件似乎正在通过静默地消除异常来捕获和处理所有异常!不用说,这是一种非常不幸的行为

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
控件停止下沉异常,并以自然和预期的方式转发它们?或者是否有一些黑客方法可以通过本机边界抛出异常?

我没有看到浏览器会吃掉异常,除非您是指脚本错误。可以通过
浏览器启用脚本错误。ScriptErrorsAppressed
属性

如果你说的是真正的异常,而不仅仅是脚本错误,你能给我们展示一些重现问题的代码吗?我们已经广泛使用了浏览器,但还没有看到您所描述的内容


编辑代码示例在我请求代码示例时不在那里

我认为发生这种情况的最佳原因是因为有一个本机管理的本机边界要跨越。本机部分没有正确地转发托管异常,并且没有什么可以做的


不过,我仍然希望有一个更好的答案。

在这里参加聚会已经晚了11年,但下面的解决方案对我来说很有效

webBrowserNavigating
中,替换
MessageBox.Show(exception.ToString())Dispatcher.BeginInvoke(()=>{throw exception;})进行代码>操作

webBrowserNavigating
方法完成并且控件返回到windows事件循环时,异常将被抛出并由正常机制处理