.NET 동등한 set_unexpected ()
-
05-07-2019 - |
문제
c ++ unexpected ()/set_unexpected () 함수와 동등한 .NET가 있습니까?
편집하다: 죄송합니다. 이전에 몇 가지 세부 사항을 생략했습니다.
언어 : C# 2.0
어딘가에 도해지 않은 예외를 던지는 레거시 앱이 있습니다. 문제의 실제 원인을 추적 할 수있을 때까지 고객의 고통을 막기 위해 무언가를 마련하고 싶습니다. C ++에서, set_unexpected ()에 의해 가리키는 함수는 내가 아는 한, 그렇지 않으면 예외가없는 예외가 기본 루틴에 기포 될 때 호출된다. 따라서 .NET 동등한 기능에 대한 내 질문이 있습니다.
해결책
응용 프로그램 유형에 따라 처리되지 않은 예외를 처리하기위한 3 가지 가능한 시나리오가 있습니다.
- Windows Forms Application의 경우 이벤트 처리기를 application.threadexception
- CommandLine 응용 프로그램의 경우 이벤트 핸들러를 연결하십시오 AppDomain.unhandledException
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)
{
....
}
제휴하지 않습니다 StackOverflow