2016-03-31 11 views
0

Ich habe es mit einer alten Python-Anwendung zu tun, die WxPython, InnoSetup und py2exe verwendet und eine benutzerdefinierte sys.excepthook hat, die sich mit allen Ausnahmen befassen sollte. Wenn jedoch eine Ausnahme auftritt, nachdem der benutzerdefinierte Ausnahmebehandler beendet und das Hauptfenster geschlossen wurde, wird dieser Dailog angezeigt. Das Schlimmste ist, dass es auf eine nicht vorhandene Protokolldatei verweist, die die Benutzer verwirrt. Der Dialog liest ‚sind Fehler aufgetreten - das Logfile ansehen ... für Details„Windows Fehlerdialog - 'Fehler aufgetreten' - Woher kommt das?

Wo dieser Dialog aus könnte kommen Ist das eine Art von System-Standard

screenshot

+0

das Logfile ansehen ... für weitere Einzelheiten. –

+1

Sind Sie sicher, dass es nicht existiert? Der Name der Protokolldatei ist seltsam, da es sich um eine '.exe.log'-Datei handelt. Vielleicht wird es nur als 'some_filename.exe 'angezeigt, da die Standardkonfiguration von Windows bekannte Dateierweiterungen versteckt. – Wombatz

+0

@Wombatz, zumindest in dem angegebenen Ort, dass die Datei nicht existiert. – Hauke

Antwort

0

Es stellt sich heraus das.? ist aufgrund unterschiedlicher Effekte.

py2exe standardmäßig stderr zu einer Protokolldatei namens sys.executable + '.log' und erzeugt umleitet, dass Dialog.

Wenn Berechtigungen für diesen Ordner schreiben nicht zulassen, i t wird stattdessen zu C:\Users\UserName\AppData\Local\VirtualStore\Program Files (x86)\... umgeleitet. Dort existiert diese Datei tatsächlich und kann Hinweise auf die Ursache des Absturzes geben.

Das letzte Ergebnis, das ich gemacht habe, war, dass der benutzerdefinierte Ausnahmebehandler viel zu spät aktiviert wurde. Während die Einfuhr und INiTS, hatte das Programm reichlich Gelegenheit zum Absturz bringen, bevor der benutzerdefinierten Handler in gekickt

Einige weitere Informationen über:. py2exe error handling redirection and popup