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

StackOverflow https://stackoverflow.com/questions/18059

Вопрос

Я использую 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 собственность.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top