Frage

Ich arbeite an einer Cross-Plattform-Anwendung in Java, die derzeit gut auf Windows, Linux und MacOS X funktioniert Ich versuche, eine schöne Art und Weise zu arbeiten, Erkennung (und Behandlung) von ‚Abstürzen‘ zu tun. Gibt es eine einfache, plattformübergreifende Art und Weise ‚Abstürze‘ in Java zu erkennen und etwas in Reaktion zu tun?

Ich denke, von ‚Abstürze‘ ich nicht abgefangene Ausnahmen bedeuten. Allerdings funktioniert der Code einige JNI verwenden, so, es wäre schön zu können Abstürze von schlechten JNI Code fangen, aber ich habe das Gefühl, das ist JVM-spezifisch.

War es hilfreich?

Lösung

Für einfache allumfassende Handhabung, können Sie die folgende statische Methode in Thread . Von der Javadoc:

  

static void setDefaultUncaughtExceptionHandler ( Thread.UncaughtExceptionHandler eh)
die Standard-Handler-Set aufgerufen, wenn ein Thread aufgrund einer nicht erfassten Ausnahme abrupt beendet, und kein anderer Handler für diesen Thread definiert wurde.

Dies ist ein sehr breiter Weg mit Fehlern oder unkontrollierten Ausnahmen zu behandeln, die nicht anderswo gefangen werden können.

Side-Hinweis: Es ist besser, wenn der Code fangen kann, melden Sie sich und / oder von Ausnahmen näher an die Quelle des Problems zu erholen. Ich würde diese Art von generali Crash behält für völlig unrecoverable Situationen Handling (dh Unterklassen von java.lang.Error ). Versuchen Sie, die Möglichkeit einer Runtime zu vermeiden jemals vollständig abgefangene gehen, da es möglich sein könnte - und bevorzugt -. für die Software, dass, um zu überleben

Andere Tipps

Für abgefangene Ausnahmen Handhabung können Sie einen neuen Thread schaffen, die eine Implementierung von ThreadGroup.uncaughtException bietet (...). Sie können dann alle nicht abgefangenen Ausnahmen abfangen und behandeln sie entsprechend (zum Beispiel eines Crash-Protokoll nach Hause schicken).

Ich kann Ihnen nicht auf dem JNI Front helfen, gibt es wahrscheinlich eine Möglichkeit, eine native Wrapper ausführbar, bevor die JVM aufrufen, aber das ausführbare Datei ist gehen zu müssen, die möglichen JVMs wissen, über alles was man nennen könnte und wie die angeben Abstürze und wo Absturzprotokolle platziert etc.

Nicht sicher, ob dies ist, was Sie brauchen, aber man kann auch erkennen, ob eine Ausnahme von innerhalb Ihres nativen Code aufgetreten ist. Siehe http: //java.sun .com / JavaSE / 6 / docs / technotes / guides / jni / spec / functions.html # wp5234 für weitere Informationen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top