문제

c ++ unexpected ()/set_unexpected () 함수와 동등한 .NET가 있습니까?


편집하다: 죄송합니다. 이전에 몇 가지 세부 사항을 생략했습니다.

언어 : C# 2.0

어딘가에 도해지 않은 예외를 던지는 레거시 앱이 있습니다. 문제의 실제 원인을 추적 할 수있을 때까지 고객의 고통을 막기 위해 무언가를 마련하고 싶습니다. C ++에서, set_unexpected ()에 의해 가리키는 함수는 내가 아는 한, 그렇지 않으면 예외가없는 예외가 기본 루틴에 기포 될 때 호출된다. 따라서 .NET 동등한 기능에 대한 내 질문이 있습니다.

도움이 되었습니까?

해결책

응용 프로그램 유형에 따라 처리되지 않은 예외를 처리하기위한 3 가지 가능한 시나리오가 있습니다.

  1. Windows Forms Application의 경우 이벤트 처리기를 application.threadexception
  2. CommandLine 응용 프로그램의 경우 이벤트 핸들러를 연결하십시오 AppDomain.unhandledException
  3. ASP.NET 응용 프로그램의 경우 Global.asax의 생성 :

    보호 된 void application_error (Object Sender, Eventargs e)

면책 조항 : 저는 C ++ 개발자가 아니지만 읽은 내용에서 귀하의 질문에 답해야합니다.

다른 팁

이 처리기는 혼합 모드 응용 프로그램에서 가장 예상치 못한 예외를 포착해야합니다.

private delegate long UnhandledExceptionFilter(IntPtr exception);

[DllImport("KERNEL32.DLL", SetLastError = true)]
private static extern IntPtr SetUnhandledExceptionFilter([MarshalAs(UnmanagedType.FunctionPtr)] UnhandledExceptionFilter filter);

// put these in your bootstrapper
AppDomain.CurrentDomain.UnhandledException += CurrentDomainUnhandledException;
Application.ThreadException += ApplicationThreadException;
SetUnhandledExceptionFilter(UnhandledExceptionFilter);

void CurrentDomainUnhandledException(object sender, UnhandledExceptionEventArgs e)
{
    ...
}

void ApplicationThreadException(object sender, ThreadExceptionEventArgs e)
{
    ...
}

long UnhandledExceptionFilter(IntPtr exception)
{
    ....
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top