2008-08-20 9 views
3

J'utilise le System.Windows.Forms.WebBrowser pour afficher la page de démarrage de Visual Studio. Cependant, il semble que le contrôle attrape et gère toutes les exceptions en les coulant silencieusement! Inutile de dire que c'est un comportement très regrettable.Empêcher le contrôle WebBrowser d'avaler des exceptions

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

Alors, ce que je fais (ci-dessus) est attraper toutes les exceptions et pop une boîte, cela vaut mieux que silencieusement une défaillance, mais encore nettement loin d'être idéale. Je voudrais qu'il redirige l'exception à travers le chemin d'échec de l'application normale pour qu'elle ne soit finalement pas gérée, ou traitée par l'application depuis la racine.

Est-il possible d'indiquer au contrôle WebBrowser d'arrêter l'enfoncement des exceptions et de les transférer de manière naturelle et attendue? Ou y a-t-il une manière hacky de lancer une exception à travers les frontières natives?

Répondre

0

Mon meilleur pari est pourquoi il arrive parce qu'il ya une limite native gérés natif de traverser. La partie native ne transfère pas correctement les exceptions gérées et il n'y a pas grand-chose à faire.

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

1

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

Si vous parlez de vraies exceptions, pas seulement des 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 était pas là quand j'ai demandé un exemple de code

Questions connexes