Question

j'utilise le System.Windows.Forms.WebBrowser, pour créer une vue à la page de démarrage de Visual Studio.Cependant, il semble que le contrôle détecte et gère toutes les exceptions en les coulant silencieusement !Inutile de dire que c'est un comportement très regrettable.

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

Le code ci-dessus annulera la navigation et avalera l'exception.

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

Donc, ce que je fais (ci-dessus), c'est attraper toutes les exceptions et ouvrir une boîte, c'est mieux que d'échouer silencieusement mais c'est encore clairement loin d'être idéal.J'aimerais qu'il redirige l'exception via le chemin normal d'échec de l'application afin qu'elle devienne finalement non gérée ou gérée par l'application à partir de la racine.

Existe-t-il un moyen de dire au WebBrowser contrôle pour arrêter de couler les exceptions et simplement les transmettre de la manière naturelle et attendue ?Ou existe-t-il un moyen astucieux de lancer une exception au-delà des frontières natives ?

Était-ce utile?

La solution 2

Mon meilleur pari est que cela se produit parce qu'il y a une frontière native-gérée-native à franchir.La partie native ne transmet pas correctement les exceptions gérées et il n'y a pas grand chose à faire.

J'espère toujours une meilleure réponse.

Autres conseils

Je n'ai pas vu le navigateur consommer des exceptions, sauf si vous parlez d'erreurs de script.Les erreurs de script peuvent être activées via le browser.ScriptErrorsSuppressed propriété.

Si vous parlez de véritables exceptions, pas seulement d'erreurs de script, pouvez-vous nous montrer du code qui reproduit le problème ?Nous avons beaucoup utilisé le navigateur et n'avons pas vu ce que vous décrivez.

modifier l'exemple de code n'était pas là lorsque j'ai demandé un exemple de code

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top