2008-08-20 5 views
3

Visual Studio 시작 페이지를 보려면 System.Windows.Forms.WebBrowser을 사용하고 있습니다. 그러나 컨트롤이 자동으로 침입하여 모든 예외를 포착하고 처리하는 것으로 보입니다! 이것은 불행한 행동이라고 말할 필요가 없습니다.WebBrowser 컨트롤에서 삼키는 예외 방지

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

위의 코드는 탐색을 취소하고 예외를 삼키게됩니다.

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

그래서, 내가 뭘 (위)이 이상적에서 여전히 명확까지 자동으로 실패보다 더 있지만, 모든 예외를 잡아 상자를 팝업입니다. 정상적인 응용 프로그램 오류 경로를 통해 예외를 리디렉션하여 궁극적으로 처리되지 않거나 루트에서 응용 프로그램에 의해 처리되도록하고 싶습니다.

WebBrowser 컨트롤에 예외를 싱킹하는 것을 중단하고 자연스럽고 예상되는 방식으로 전달하도록하는 방법이 있습니까? 아니면 네이티브 경계를 통해 예외를 던질 수있는 해킹 방법이 있습니까?

답변

0

내 가장 좋은 방법에 대해 물었을 때

편집 코드 샘플은 없었다. 네이티브 부분은 관리되는 예외를 올바르게 전달하지 않으며 수행 할 수있는 부분이 많지 않습니다.

나는 아직도 더 나은 대답을 원합니다.

1

스크립트 오류를 ​​의미하지 않는 한 브라우저에서 예외를 먹는 것을 보지 못했습니다. 스크립트 오류는 browser.ScriptErrorsSuppressed 속성을 통해 사용 설정할 수 있습니다.

스크립트 오류가 아닌 실제 예외에 대해 이야기하는 경우 문제를 재현하는 코드를 표시 할 수 있습니까? 우리는 브라우저를 광범위하게 사용했으며 사용자가 설명하는 것을 보지 못했습니다. 나는 그것이 교차하는 기본 관리 네이티브 경계가 있기 때문입니다 일어나는 이유 코드 샘플

관련 문제