Pergunta

estou usando o System.Windows.Forms.WebBrowser, para fazer uma visualização como a página inicial do Visual Studio.No entanto, parece que o controle está capturando e tratando todas as exceções, afundando-as silenciosamente!Não há necessidade de dizer que este é um comportamento muito infeliz.

void webBrowserNavigating(object sender, WebBrowserNavigatingEventArgs e)
{
    // WebBrowser.Navigating event handler
    throw new Exception("OMG!");
}

O código acima cancelará a navegação e engolirá a exceção.

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());
    }
}

Então, o que eu faço (acima) é capturar todas as exceções e abrir uma caixa, isso é melhor do que falhar silenciosamente, mas ainda está claramente longe do ideal.Gostaria que ela redirecionasse a exceção através do caminho normal de falha do aplicativo, para que ela não fosse tratada ou fosse tratada pelo aplicativo a partir da raiz.

Existe alguma maneira de dizer ao WebBrowser controle para parar de afundar as exceções e apenas encaminhá-las da maneira natural e esperada?Ou existe alguma maneira hackeada de lançar uma exceção através dos limites nativos?

Foi útil?

Solução 2

Minha melhor aposta por que isso acontece é porque há um limite nativo-gerenciado-nativo a ser cruzado.A parte nativa não encaminha corretamente as exceções gerenciadas e não há muito que possa ser feito.

Ainda estou esperando uma resposta melhor.

Outras dicas

Não vi o navegador consumir exceções, a menos que você se refira a erros de script.Erros de script podem ser habilitados através do browser.ScriptErrorsSuppressed propriedade.

Se você está falando de exceções reais, não apenas de erros de script, pode nos mostrar algum código que reproduza o problema?Usamos o navegador extensivamente e não vimos o que você está descrevendo.

editar o exemplo de código não estava lá quando solicitei um exemplo de código

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top