Запретить элементу управления WebBrowser проглатывать исключения
-
09-06-2019 - |
Вопрос
Я использую System.Windows.Forms.WebBrowser
, чтобы создать стартовую страницу view 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
контролируйте, чтобы прекратить пропускать исключения и просто пересылать их естественным и ожидаемым способом?Или есть какой-то хакерский способ создать исключение через собственные границы?
Решение 2
Я лучше всего понимаю, почему это происходит, потому что существует граница, которую нужно пересечь с помощью нативного управления.Собственная часть неправильно пересылает управляемые исключения, и мало что можно сделать.
Однако я все еще надеюсь на лучший ответ.
Другие советы
Я не видел, чтобы браузер получал исключения, если только вы не имеете в виду ошибки скрипта.Ошибки скрипта могут быть включены с помощью browser.ScriptErrorsSuppressed
собственность.
Если вы говорите о реальных исключениях, а не просто ошибках скрипта, не могли бы вы показать нам какой-нибудь код, который воспроизводит проблему?Мы широко использовали браузер и не видели того, что вы описываете.
Редактировать образца кода там не было, когда я запросил образец кода