.net - 防止 WebBrowser 控件吞下异常

标签 .net winforms exception-handling webbrowser-control

我正在使用 System.Windows.Forms.WebBrowser , 以查看 a-la 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控制停止接收异常并以自然和预期的方式转发它们?还是有一些 hacky 方法可以通过本地边界抛出异常?

最佳答案

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

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

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

关于.net - 防止 WebBrowser 控件吞下异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18059/

相关文章:

java - 为什么 Thread 的子类可以吞下 InterruptedException?

iphone - iOS异常处理问题

c# - 将图像列表绑定(bind)到 ListBox

.net - 不带 ActiveX 的 Internet Explorer 自动化

c# - 如果第 2 代已满,垃圾收集期间会发生什么?

c# - AsParallel 扩展的实际工作原理

.net - 从 x86 应用程序获取 x64 进程主模块位置?

c# - 等到我的线程结束

.net - 在 Visual Studio 设计器中调试 InitializeComponent 函数

java - 如何在自己的类中模拟 ConcurrentModificationException?