Domanda

Sto usando il System.Windows.Forms.WebBrowser, per creare una visualizzazione simile alla pagina iniziale di Visual Studio.Tuttavia, sembra che il controllo stia rilevando e gestendo tutte le eccezioni affondandole silenziosamente!Non c'è bisogno di dire che questo è un comportamento molto sfortunato.

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

Il codice sopra annullerà la navigazione e inghiottirà l'eccezione.

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

Quindi, quello che faccio (sopra) è catturare tutte le eccezioni e aprire una scatola, questo è meglio che fallire silenziosamente ma è comunque chiaramente lontano dall'ideale.Mi piacerebbe reindirizzare l'eccezione attraverso il normale percorso di errore dell'applicazione in modo che alla fine diventi non gestita o gestita dall'applicazione dalla radice.

C'è un modo per dirlo WebBrowser controllo per smettere di affondare le eccezioni e inoltrarle semplicemente nel modo naturale e previsto?Oppure esiste un modo complicato per lanciare un'eccezione attraverso i confini nativi?

È stato utile?

Soluzione 2

La mia migliore scommessa sul perché ciò accada è perché c'è un confine nativo-gestito da oltrepassare.La parte nativa non inoltra correttamente le eccezioni gestite e non c'è molto che si possa fare.

Spero comunque in una risposta migliore.

Altri suggerimenti

Non ho visto il browser mangiare eccezioni, a meno che tu non intenda errori di script.Gli errori di script possono essere abilitati tramite browser.ScriptErrorsSuppressed proprietà.

Se parli di eccezioni reali, non solo di errori di script, puoi mostrarci del codice che riproduce il problema?Abbiamo utilizzato ampiamente il browser e non abbiamo visto ciò che stai descrivendo.

modificare l'esempio di codice non era presente quando ho chiesto un esempio di codice

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top