uncaughtexceptionhandler

___ tag123exception ___ Eine Ausnahme ist eine ungewöhnliche Bedingung, die eine Abweichung vom normalen Ablauf des Programms erfordert. Normalerweise sollte eine Ausnahme nicht zu einem Totalausfall führen, sondern stattdessen von einem Ausnahmebehandler begleitet werden. Die Ausnahmebehandlung ist ein eingebautes Konstrukt in vielen Programmiersprachen. In der Regel werden Ausnahmen behandelt, indem der Stapel abgewickelt wird und somit in einen definierten Zustand außerhalb des Gültigkeitsbereichs der Ausnahme zurückversetzt wird und dann ein Verarbeitungsblock oder eine Routine aufgerufen wird. ___ tag123java ___ Java (nicht zu verwechseln mit JavaScript oder JScript oder JS) ist eine universelle objektorientierte Programmiersprache, die für die Verwendung in Verbindung mit der Java Virtual Machine (JVM) entwickelt wurde. "Java-Plattform" ist der Name für ein Computersystem, auf dem Tools zum Entwickeln und Ausführen von Java-Programmen installiert sind. Verwenden Sie dieses Tag für Fragen, die sich auf die Java-Programmiersprache oder Java-Plattform-Tools beziehen. ___ tag123uncaughExceptionhandler ___ 'UncaughtExceptionHandler' ist eine [tag: java] Schnittstelle, die die Handler definiert, die aufgerufen werden, wenn ein Thread eine Ausnahme auslöst, die nicht von einem 'try' Block abgefangen wird. Eine Klasse, die diese Schnittstelle implementiert, kann registriert werden, so dass der Programmierer steuern kann, was in diesem Fall passieren soll. ___ qstntxt ___

Etwas Seltsames ist passiert. Ich habe ein Java-Programm geschrieben, in dem ich nichts unternommen habe, um nicht abgefangene Exceptions in irgendeiner speziellen Weise zu behandeln. Aber wenn ich dieses ein bestimmtes Programm in Windows 7 ausführe, gibt es diese nicht abgefangene Ausnahme in einem statischen Kontext, der von main aufgerufen wird und ein Fenster auftaucht, das die Ausnahme anzeigt. Ich habe versucht, ein kleines Programm zu schreiben, um diesen Effekt zu vervielfältigen, ohne Erfolg. Ein Programm (das ich komplett von Hand geschrieben habe) erzeugt ein Popup, während kein anderes dasselbe tut.

Ich möchte dies besonders nachverfolgen, damit ich Code hinzufügen kann, der andere CAUGHT-Exceptions dazu bringt, den Stack-Trace auf ähnliche Weise anzuzeigen.

Ich habe im IRC danach gefragt, aber die Leute sagen mir, dass das nicht passiert. Nun, es ist passiert. Es gibt einen Screenshot unten.

Ich denke, meine einzige Hoffnung ist, wenn jemand anderes dies erkennt und mir sagen kann, woher es kommt.

Danke!

UPDATE: Entschuldigung für die Verspätung, Code zu bekommen. Ich musste mich um einen kolikartigen Säugling kümmern. Bitte beachten Sie, dass dies eine Desktop-Java-App ist. Es ist kein Applet und es verwendet keinen Webstart.

Hier wird Code kopiert und eingefügt aus dem Programm, das den Dialog bekommt. Ich werde eine weitere Bearbeitung vornehmen, um Sie wissen zu lassen, ob mein Kollege (der die Ausnahme erhält) den Dialog für diesen Fall erhält. Ich habe darauf geachtet, alles, was zur Ausnahme geführt hat, einzubeziehen. Es fehlt nur die IPAddress-Klassenimplementierung, die jedoch nicht an der Ausnahme beteiligt ist, da sie erst nach dem Auftreten der Ausnahme verwendet wird. Notieren Sie die Sterne vor der Zeile, in der die Ausnahme auftritt. Diese Codezeile entspricht der Ausnahme, die Sie im Screenshot sehen können.

%Vor%

ZWEITES UPDATE: Mein Kollege meldet, dass dieses Programm den Dialog NICHT erzeugt. Der einzige Unterschied zwischen diesem Programm und dem Programm, das das Popup-Fenster erhält, besteht darin, dass das Programm, das das Popup-Fenster aufruft, von einem von AdvancedInstaller erzeugten Exe-Wrapper gestartet wird. Außerdem ist innerhalb des Java-Programms die Reihenfolge der Ausführung identisch. Ich habe das gegoogelt, und soweit ich finden kann, macht AdvancedInstaller gar nichts, was dazu führen würde, dass dieses Popup generiert wird. Ich bin mir nicht sicher, ob das möglich ist, ohne das Java-Programm zu ändern (was nicht der Fall ist), weil ich nicht sicher bin, ob Sie irgendetwas von außerhalb des Java-Programms tun können, um dies zu ermöglichen. Außer vielleicht capture stderr, aber das erklärt nicht, warum andere Programme, die von AdvancedInstaller umschlossen werden, dieses Popup nicht erzeugen oder warum spätere von dieser Anwendung erzeugte Ausnahmen auch dieses Popup nicht erzeugen.

    
___ qstnhdr ___ Java: Mysteriöser Java-Uncaught-Exception-Handler [mit Code] ___ answer11747093 ___

2. Antwort (Nachdem zusätzliche Informationen zur Frage hinzugefügt wurden)

Advanced Installer hat eine "Startfehlerprüfung" -Einstellung wie folgt beschrieben:

  

Überprüfung des Startfehlers

     

Jede nicht abgefangene Ausnahme vom Hauptthread ist   beschrieben in einem Dialogfeld, das es dem Benutzer erlaubt, entweder die   Anwendung oder um die Ausnahme zu ignorieren. Diese Option gilt nur für   GUI-Anwendungen.

Weitere Informationen: Ссылка .

1. Antwort

Dies hängt stark vom Kontext ab und Sie haben nicht genügend Informationen bereitgestellt, um eine sehr spezifische Antwort zu erhalten. Die loc2.LoC2.java ist wahrscheinlich benutzerdefinierter oder projektspezifischer Code.

Im Allgemeinen kann der nicht erfasste Handler jedoch über:

verwaltet (oder abgefragt) werden
  • %code% und
  • %code%

Weitere Informationen:

___
3
Antworten

Toast wird nicht in UnCaughtExceptionHandler angezeigt

Ich verwende diesen Code, um alle nicht abgefangenen Ausnahmen zu behandeln, die zum Absturz meiner Anwendung führen können. %Vor% Wenn ich es mit einer bekannten, aber nicht abgefangenen Ausnahme (nur zum Testen) starte, wird die Aktivität...
23.07.2012, 09:19
2
Antworten

Werden in UncaughtExceptionHandler geworfene Fehler verschluckt?

Thread.UncaughtExceptionHandler gibt an, dass, wenn die Methode, die nicht abgefangene Ausnahmen behandelt, selbst eine Ausnahme auslöst, diese Ausnahme ignoriert wird:    void uncaughtException (Thread t, Throwable e):       Methode,...
18.07.2014, 22:27
1
Antwort

Java: Mysteriöser Java-Uncaught-Exception-Handler [mit Code]

Etwas Seltsames ist passiert. Ich habe ein Java-Programm geschrieben, in dem ich nichts unternommen habe, um nicht abgefangene Exceptions in irgendeiner speziellen Weise zu behandeln. Aber wenn ich dieses ein bestimmtes Programm in Windows 7 aus...
31.07.2012, 18:51