2008-08-20 16 views
3

Ich verwende System.Windows.Forms.WebBrowser, um eine Visual Studio-Startseite anzuzeigen. Es scheint jedoch, dass das Steuerelement alle Ausnahmen abfängt und behandelt, indem es sie stilllegt! Keine Notwendigkeit zu sagen, das ist ein sehr unglückliches Verhalten.Verhindern, dass das WebBrowser-Steuerelement Exceptions verschluckt

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

Der obige Code wird die Navigation abbrechen und die Ausnahme verschlucken.

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

Also, was ich zu tun (siehe oben) ist es, alle Ausnahmen fangen und einen Kasten Pop, das ist besser als leise versagt aber bei weitem noch nicht klar ideal. Ich möchte, dass die Ausnahme über den normalen Anwendungsfehlerpfad umgeleitet wird, sodass sie letztendlich nicht behandelt wird oder von der Anwendung vom Stamm aus gehandhabt wird.

Gibt es eine Möglichkeit, die WebBrowser Kontrolle zu sagen, die Ausnahmen zu stoppen und sie nur die natürliche und erwartete Art und Weise weiterleiten? Oder gibt es einen hacky Weg, eine Ausnahme durch native Grenzen zu werfen?

Antwort

0

Meine beste Wette, warum es passiert ist, weil es eine native-Managed-native Grenze zu überqueren. Der native Teil leitet die verwalteten Ausnahmen nicht korrekt weiter und es gibt nicht viel, was getan werden kann.

Ich hoffe immer noch auf eine bessere Antwort.

1

Ich habe nicht gesehen, dass der Browser Ausnahmen isst, außer Sie meinen Skriptfehler. Skriptfehler können über die Eigenschaft browser.ScriptErrorsSuppressed aktiviert werden.

Wenn Sie über echte Ausnahmen sprechen, nicht nur über Skriptfehler, können Sie uns Code zeigen, der das Problem reproduziert? Wir haben den Browser ausgiebig genutzt und haben nicht gesehen, was Sie beschreiben.

bearbeiten die Code-Probe war nicht da, als ich für ein Codebeispiel gefragt