문제

MFC 내부에서 예외를 던지면 코드에 캐치 블록이 있더라도 앱이 매달려 있습니다. 마우스 나 키보드에 응답을 거부하고이를 종료하는 유일한 방법은 작업 관리자를 사용하는 것입니다.

이 질문을 게시하는 이유

내 부끄러운 일에, 모달 대화에서 탁월한 오류가 발생할 때마다 매달려있는 인기있는 수축 포장 응용 프로그램이 있습니다. 정수 오류 코드에서 예외로 막대한 전환을했을 때, 나는 예외 예외의 기본 클래스로 std :: 예외를 선택해야했습니다. 엄청난 양의 작업이 우리의 테스트 가이 문제를 발견 한 전환에 들어가기 전까지는 아니었고, 그때까지 변화하기에는 너무 늦었습니다. 이 질문/답변이 누군가가 같은 실수를하지 않기를 바랍니다.

도움이 되었습니까?

해결책

CDIALOG :: DOMODAL 코드는 상위 창을 비활성화하여 대화 상자를 만듭니다. 대화 상자 코드가 돌아 오면 창이 다시 활성화됩니다. Cexception* 오류에 대한 명백한 캐치가 있지만 다른 종류의 예외는 아닙니다. 따라서 부모 창은 다시 활성화되지 않습니다.

Cexception에서 파생 된 예외에 대한 포인터를 던지도록 코드를 변경하면 문제가 해결됩니다.

다른 팁

Windows가 AppHangs를 감지하는 방법에 대해 배우고 싶다면 Windows 오류보고 블로그에 게시물을 추가했습니다.

4의 1 부가 있습니다

4의 2 부가되자

4의 3 부가 걸리게하십시오

4의 4 부가되자

중요한 것은 Microsoft의 Windows 오류보고를 통해 전송 될 때이 정보가 소프트웨어 개발자에게 전달되어 이러한 문제를 해결하려고 시도한다는 것입니다. 오류 보고서를 보내는 경우 PC에서 발생하는 문제를 해결하는 데 도움이됩니다!

Windows Error Reporting Team의 Microsoft의 프로그램 관리자입니다.

마크의 대답이 맞습니다. 이 문제에 대한 훨씬 더 엄격한 분석과 자신의 코드에서 다루기위한 자세한 제안은 이것을 참조하십시오. Doug Harrison의 FAQ (특히 Q6 섹션).

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