我正在使用 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 控制以停止沉没异常并以自然且预期的方式转发它们?或者是否有一些奇怪的方法可以通过本机边界抛出异常?

有帮助吗?

解决方案 2

我最好的猜测为什么会发生这种情况是因为需要跨越本机管理本机边界。本机部分无法正确转发托管异常,因此无能为力。

但我仍然希望得到更好的答案。

其他提示

我还没有看到浏览器吃异常,除非你指的是脚本错误。脚本错误可以通过以下方式启用 browser.ScriptErrorsSuppressed 财产。

如果您谈论的是真正的异常,而不仅仅是脚本错误,您能否向我们展示一些重现该问题的代码?我们广泛使用了该浏览器,但没有看到您所描述的内容。

编辑 当我要求提供代码示例时,代码示例不存在

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top