Zum Inhalt springen

Exception Handling in Threads


mOSSpOWER

Empfohlene Beiträge

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ß

Link zu diesem Kommentar
Auf anderen Seiten teilen

@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ß

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...