mOSSpOWER Geschrieben 11. Januar 2007 Teilen Geschrieben 11. Januar 2007 Hallo "Freunde", ich benutze nicht sehr oft Threads und brauche nun für mein Programm welche. Es wird das Hauptprogramm gestartet und dann nach und nach sieben Prozesse (also Unterprogramme) ... diese sollen alle in einem Thread laufen und Infos aus einer zentralen List lesen, bzw. auch schreiben (natürlich wird nicht durcheinandergeschrieben, sondern jeder Thread darf nur bestimmte Setter-Methoden aufrufen) ... jetzt ist meine Frage, wie Ihr das mit dem Exception-Handling macht ... ich möchte irgends möglich (vielleicht ThreadGroup) zentral Exceptons abfangen .. leider kann ich ja die run-Methode nicht mit einer throws-Klausel ausstatten, wenn die Exception höher angesiedelt ist, als eine Runtime-Exception .. ich möchte aber keine Runtime-Exceptions, da man dann immer sehr einfach im aufrufendem Programm das Try-Catch vergisst ... gibt es denn eine zentrale und elegante Möglichkeit, wie hier Exceptions gehandelt werden? .. ich möchte die zentral catchen und dann abhängig vom Fehlercode entscheiden ob "nur" weggeloggt werden kann und der Thread dann wieder angeschmissen wird oder aber das ganze Programm runtergefahren wird. Mir ist klar, dass ich in jeder Thread-Klasse eine Exception-Getter-Methode implementieren kann und den Thread selber deaktivieren .. ist das nicht unschön? ... ist das wirklich nötig? ... leider konnte ich bezüglich meines Problems im Web nix finden ... danke schon mal für evtl. Antworten. Gruß Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_Newlukai Geschrieben 13. Januar 2007 Teilen Geschrieben 13. Januar 2007 Wie ich eben in der API gelesen habe, kann man einem Thread einen "UncaughtExceptionHandler" zuweisen. Vielleicht wäre das eine Möglichkeit für Dich? JavaAPI - Thread JavaAPI - UncaughtExceptionHandler Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mOSSpOWER Geschrieben 15. Januar 2007 Autor Teilen Geschrieben 15. Januar 2007 @Newlukai, ja, das ist seit 5.0 möglich, jedoch bezieht sich dies "lediglich" auf "nicht gehandelte" Exceptions ... d.h., wenn z.B. im Code steht: int i = 5 / 0; dann kann ich uncaught aufrufen ... rufe ich jedoch im Thread z.B. eine Methode auf, die eine throws-Klausel hat, dann muss ich die leider explizit verarbeiten ... ich habe nun mein Problem folgendermaßen gelöst: Basisklasse für alle Threads mit setException und getException (gleichzeitig auch hier Thread.interrupt) ... d.h. die run läuft solange, solange hier kein Fehler drinnen steht .... das Hauptprogramm startet alle Threads und liest dann alle 100 Millisekunden die jeweiligen Werte aus getException aus ... ist einmal der Wert nicht null, beendet Threadgroup alle Threads (bzw. nach Wichtigkeit schmeißt den anderen wieder an) ... ich glaube dies ist die beste Lösung, andere ist mir nicht eingefallen. Gruß Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.