Запретить элемент управления WebBrowser глотать исключения

Я использую System.Windows.Forms.WebBrowser, чтобы сделать просмотр а-ля Visual Studio Start Page. Тем не менее, кажется, что элемент управления ловит и обрабатывает все исключения, молча опуская их! Не нужно говорить, что это очень неудачное поведение.

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контролю, чтобы он прекратил работу с исключениями и просто отправил их естественным и ожидаемым способом? Или есть какой-нибудь хакерский способ выбросить исключение через родные границы?

20.08.2008 14:10:39
2 ОТВЕТА

Я не видел, чтобы браузер ел исключения, если вы не имеете в виду ошибки скрипта. Ошибки сценария могут быть включены через browser.ScriptErrorsSuppressedсвойство.

Если вы говорите о реальных исключениях, а не только об ошибках скрипта, можете ли вы показать нам некоторый код, который воспроизводит проблему? Мы широко использовали браузер и не видели того, что вы описываете.

изменить образец кода не было там, когда я попросил образец кода

1
27.08.2008 17:33:39
РЕШЕНИЕ

Моя лучшая ставка на то, почему это происходит, потому что есть граница, управляемая родным рулем, которую нужно пересечь. Нативная часть не передает правильно управляемые исключения, и мало что можно сделать.

Я все еще надеюсь на лучший ответ, хотя.

0
29.09.2009 14:47:38