C#TryCatch에서 캡처되지 않은 예외 캡처

1997 단어 C#기초
  • Winform 프로그램에서try...catch가 이상 포획을 했지만 이상 닫힌 상황이 존재한다. 프로그램에서 이러한 이상을 포획하면 문제의 포지셔닝 분석과 프로그램 최적화를 크게 편리하게 할 수 있다.

  • 두 개의 예외 이벤트
  • Application.ThreadException은 응용 프로그램 UI 주 스레드에서 스레드 이상을 포착하지 않았을 때 발생하는 이벤트입니다.
  • AppDomain.CurrentDomain.Unhandled Exception 백엔드 스레드에서 어떤 이상이 포획되지 않았을 때 터치합니다.

  • 단계 추가
  • 프로그램 입구(Main)에 이벤트 귀속 추가
          //            :ThreadException  
          Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
          //  UI    
          Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
          //   UI    
          AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
    
  • 이벤트 실현, 이상 정보 분석 추가
      private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
      {
          string str = GetExceptionMsg(e.ExceptionObject as Exception, e.ToString());
          //     ,     
      }
    
      private static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
      {
          string str = GetExceptionMsg(e.Exception, e.ToString());
          //     ,     
      }
    
      static string GetExceptionMsg(Exception ex, string backStr)
      {
          StringBuilder sb = new StringBuilder();
          sb.AppendLine("****************************    ****************************");
          sb.AppendLine("【    】:" + DateTime.Now.ToString());
          if (ex != null)
          {
              sb.AppendLine("【    】:" + ex.GetType().Name);
              sb.AppendLine("【    】:" + ex.Message);
              sb.AppendLine("【    】:" + ex.StackTrace);
    
              sb.AppendLine("【    】:" + ex.TargetSite);
    
          }
          else
          {
              sb.AppendLine("【     】:" + backStr);
          }
          sb.AppendLine("***************************************************************");
          return sb.ToString();
      }
    
  • 좋은 웹페이지 즐겨찾기