문제

내가 복잡한 GUI 로 작성된 응용 프로그램에서는 파이썬 wxPython.

나는 그것을 원한 인증을 위해 윈도우 비스타,그래서 그것이 충돌하는 방법으로 원인 윈도우 오류 보고 대화 상자(하나는 요청"당신은 당신을 보내려고 보고하는 Microsoft?")을 나타납니다.이것은 관련성을 테스트하는 경우에 없는 32"윈도우 비스타 인증 테스트 사례"문서입니다.

불행하게도 때 나는 충돌을 내 응용 프로그램 ThreadHijacker 도구 wxPython 여 같은 메시지:

Unhandled exception
---------------------------
An unhandled exception occurred. Press "Abort" to terminate the program,
"Retry" to exit the program normally and "Ignore" to try to continue.
---------------------------
Abort   Retry   Ignore

을 방지할 수 있는 방법 wxPython 에서 보여주는 이 메시지가 나타납니까?나는 사용자 정의 sys.excepthook, 지만,그것은 보인다는 이 대화상자가 표시되기 전에 제외한 훅을 방해할 수 있다.

편집:

문서wxAppConsole::OnExceptionInMainLoop 라고과에서 MSW 표시되는 일부 멋진 대화할 수 있는 사용자가 선택할 서로 다른 옵션이 있습니다.그것은 보인다,그러나 wxPython 허용하지 않는 과부는 함수...사람을 변경하는 방법을 알고 기본 행동 wxAppConsole::OnExceptionInMainLoop 에 wxPython?
내가 선호하는 솔루션을에서는 파이썬은 수준 그 이상으로 가는 C/C++

EDIT2:

모두 모두,그 요청에 wxPython 메일링 리스트와 로빈 던 대답할 것으로 보고 만들기 wxAppConsole::OnExceptionInMainLoop 재정의 다음 버전에서의 wxPython.이후 나는 기다릴 수 없었을 컴파일하는 내 자신의 버전의 wxPython 는 포함되지 않는 기능입니다.그것의 존재는 wxAppConsole::OnExceptionInMainLoop 기능 활성화/비활성화 할 수 있습여 적절한 설정이 편집의 플래그입니다.

도움이 되었습니까?

해결책

그것은 모두 내 자신의 wxwidgets와 wxpython을 컴파일하는 것으로 끝났으며, 하나의 컴파일 플래그 만 변경되었습니다. wxuse_exceptions 0으로 설정해야합니다.

Robin Dunn은 Wxpython을 패치하려고 시도 할 것이라고 썼으므로 전체 라이브러리를 다시 컴파일하지 않고이 동작을 수정할 수 있습니다.

다른 팁

내가 올바르게 기억한다면, 이것은 WXWIDGET의 최상위 레벨 (WXAPP)의 캐치 (...)입니다. 벡터 예외 핸들러 또는 _set_se_translator ()를 사용하여 구조화 된 예외에서 첫 번째 샷을 얻고 여기에서 wer, 즉 wer로 종료 할 수 있습니다.

그것은 당신을 처리하는 것일까?당신은,나는 생각을 넣어도:를 제외하고:블록이 주위에 모든 방법밖에 없습니다.를 작성할 수 있습니다 장식:

def catch_exception(f):
    def safe(*args, **kw):
        try:
            f(*args, **kw)
        except Exception, e:
            handle_exception(e)
    return safe

def handle_exception(e):
    # do Vista stuff
    sys.exit()

다음을 장식하는 모든 함수 호출될 수 있으로 mainloop(이후 나는 wxPython 는 자신의 잡).

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