문제

이것은 아마도 비현실적이지만, 프로세스에서 발생하는 모든 첫 번째 기회 예외를 구성 요소에 알릴 수 있습니까?

우리는 예외를 먹는 것 외에는 아무것도하지 못하고 비즈니스 관계의 정치는 전체 시련을 왕실의 고통으로 만듭니다.

우리는 또한 우리의 코드 중 일부가 중앙 집중식 예외 로거를 사용하지 않고 심연으로 예외를 사라지게하는 실망스러운 행동을 수행하고 있음을 알고 있습니다.

나는 우리의 응용 프로그램이 효과를 달성하기 위해 디버깅 응용 프로그램의 아동 프로세스로 시작해야한다고 가정하지만, 나는 그것이 묻는 가치가 있다고 생각합니다 :)

도움이 되었습니까?

해결책

Net 4.0은 실제로 추가했습니다 AppDomain.FirstChanceException 이벤트. 캐치 블록이 실행되기 전에 발사됩니다.

이것 MSDN 기사 몇 가지 예가 있습니다.

기본적으로 다음과 같은 이벤트 핸들러를 추가합니다.

    AppDomain.CurrentDomain.FirstChanceException += 
        (object source, FirstChanceExceptionEventArgs e) =>
        {
            Console.WriteLine("FirstChanceException event raised in {0}: {1}",
                AppDomain.CurrentDomain.FriendlyName, e.Exception.Message);
        };

다른 팁

.NET 프로파일 링 API를 사용하여 모든 종류의 상태에서 예외에 대한 알림을 얻을 수 있습니다. 이는 사용 가능한 방법입니다.

ExceptionThrown
ExceptionSearchFunctionEnter
ExceptionSearchFunctionLeave
ExceptionSearchFilterEnter
ExceptionSearchFilterLeave
ExceptionSearchCatcherFound
ExceptionOSHandlerEnter
ExceptionOSHandlerLeave
ExceptionUnwindFunctionEnter
ExceptionUnwindFunctionLeave
ExceptionUnwindFinallyEnter
ExceptionUnwindFinallyLeave
ExceptionCatcherEnter
ExceptionCatcherLeave
ExceptionCLRCatcherFound
ExceptionCLRCatcherExecute

프로파일 링 API를 사용하는 것이 전적으로 희미한 마음을위한 것은 아닙니다. 살펴보십시오 http://msdn.microsoft.com/en-us/library/ms404386.aspx 귀하의 연구를위한 진입 점으로 http://msdn.microsoft.com/en-us/library/bb384687.aspx 예외 처리를 위해.

나는 당신의 관리 코드 내에서 그것을하는 간단한 방법을 알지 못합니다.

AppDomain.FirstChanceException += new EventHandler...

이벤트 또는 이와 유사합니다.

편집 : 아마도 더 나은 대안은 비정규 디버깅 API 대신에.

기본적으로 당신은 a를 설정할 수 있습니다 IcormanagedCallback/IcormanagedCallback2 콜백 사용 icordebug :: setmanagedhandler 예외가 발생하면 콜백을받습니다.

나는이 분야에서 프로파일 링 API에 대한 장점/단점이 무엇인지 알기에 충분하지 않습니다.

방금 보았습니다 MDGB 샘플 Icordebug API를 사용하고 예외에서 충분한 알림을 얻는 것으로 보입니다 (어떤 이벤트가 발생하는지 신속하게 확인하기 위해 Corapi/Debugger.cs : 406의 HandleEvent 메소드에서 중단 점을 설정하십시오).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top