Я использую 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
контролю, чтобы он прекратил работу с исключениями и просто отправил их естественным и ожидаемым способом? Или есть какой-нибудь хакерский способ выбросить исключение через родные границы?
Я не видел, чтобы браузер ел исключения, если вы не имеете в виду ошибки скрипта. Ошибки сценария могут быть включены через browser.ScriptErrorsSuppressed
свойство.
Если вы говорите о реальных исключениях, а не только об ошибках скрипта, можете ли вы показать нам некоторый код, который воспроизводит проблему? Мы широко использовали браузер и не видели того, что вы описываете.
изменить образец кода не было там, когда я попросил образец кода
Моя лучшая ставка на то, почему это происходит, потому что есть граница, управляемая родным рулем, которую нужно пересечь. Нативная часть не передает правильно управляемые исключения, и мало что можно сделать.
Я все еще надеюсь на лучший ответ, хотя.