2008-10-09 5 views
2

WinForm VB.NET 프로젝트를 디버깅하는 동안 처리되지 않은 예외가 발생하면 문제가 발생합니다.Visual Studio 2008 - 처리되지 않은 예외가 발생할 때 응용 프로그램이 닫힙니다.

문제는 대신 재 시도의, ApplicationEvents에서 발견 VS2003

unhandeld 예외가 새로운 My.MyApplication 클래스에 구현되어있는 경우가 있었다 같은 조치를 내 응용 프로그램이 종료 내가 응용 프로그램을 다시 시작해야한다는 것입니다 .vb

Private Sub MyApplication_UnhandledException(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.UnhandledExceptionEventArgs) Handles Me.UnhandledException 
    Dim handler As New GlobalErrorHandler() 
    handler.HandleError(e.Exception) 

    e.ExitApplication = False 
End Sub 

참고 : handler.HandleError는 대화 상자를 표시하고 오류를 로그 파일에 기록합니다.

는 또한 VS2003에서 작동하는 데 사용되는 다음 코드를 시도했지만 VS2008에서 실행할 때이 같은 동작 결과 : handle.HandleError로

AddHandler System.Windows.Forms.Application.ThreadException, AddressOf OnApplicationErrorHandler 
    AddHandler AppDomain.CurrentDomain.UnhandledException, AddressOf OnUnhandledExceptionHandler 

OnApplicationErrorHandler 및 OnUnhandledExceptionHandler가하는 같은

실행 VS2008 외부의 응용 프로그램은 예상되는 동작 (응용 프로그램이 종료되지 않음)을 초래하지만 디버깅 중에는 테스트주기가 증가합니다.

업데이트 : 내가 VS2008에 대해 확실하지 않다 C#을

답변

1

나는이 블로그 게시물에서이 문제에 대한 해답을 찾을 확인 : Handling "Unhandled Exceptions" in .NET 2.0

당신에게 마크 감사를!

짧은 대답은 다음과 같습니다

Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException); 

이 디버그 및 실행 모드에서 같은 동작이 발생합니다. 디버깅 중에 닫히지 않는 VS 결과.

0

에서이 문제를 보여주기 위해 내 대답에 예제 코드를 추가했습니다,하지만 난 VS2005에서 한동안 같은 문제가 있었다. 디버그 -> 예외 (또는 Crtl + Alt + E)로 가서 던진 모든 상자를 선택 취소했지만 모든 사용자가 처리하지 않은 상자를 선택했는지 확인해야합니다.

코드와 함께 뭔가 다른 일이 생길 수도 있지만이 동작은 해결 될 수 있습니다.

+0

나는 당신이 제안한 것을 시도했지만 그것은 나를 위해 작동하지 않았다. –

1

확인 더 많은 작업을 수행했지만 아직 답변이 없습니다.

using System; 
using System.Windows.Forms; 
namespace TestCSharpUnhandledException 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 

      Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException); 
      AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); 
     } 

     void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) 
     { 
      MessageBox.Show("Oops an unhandled exception, terminating:" + e.IsTerminating);     
     } 

     void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e) 
     { 
      MessageBox.Show("Oops an unhandled thread exception"); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      throw new Exception("Dummy unhandled exception"); 
     } 
    } 
} 

내가 흥미로운 발견 무엇 UnhandledException VS 에서 디버깅입니다 : 나는이 문제에만 VB.NET 관련뿐만 아니라 C#

다음

에 문제를 보여줍니다 간단한 C# 프로그램이되지 않는다는 것을 발견 이벤트가 발생하지만 응용 프로그램을 VS 외부에서 실행하면 스레드 예외이 발생합니다.

또한 VS 내부에서 e.IsTerminating이 true로 설정되었으므로 궁극적으로이 값을 false로 설정합니다. (이것은 읽기 전용 속성)

관련 문제