防止WebBrowser控件吞下异常
时间:2020-03-05 18:41:07 来源:igfitidea点击:
我正在使用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控件停止接收异常,而仅以自然和预期的方式转发它们?还是有一些骇人听闻的方法可以通过本机边界引发异常?
解决方案
回答
除非我们是指脚本错误,否则我还没有看到浏览器吃异常。可以通过browser.ScriptErrorsSuppressed
属性启用脚本错误。
如果我们在谈论真正的异常,而不仅仅是脚本错误,我们可以向我们展示一些重现该问题的代码吗?我们已经广泛使用了浏览器,但是还没有看到我们所描述的内容。
当我要求一个代码示例时,编辑代码示例不存在
回答
我之所以能做到这一点,最好的选择是因为有一个本机管理的本机边界需要越过。本机部分无法正确转发托管异常,因此无法完成很多工作。
我仍然希望有一个更好的答案。