Zum Inhalt springen

Exception Handling in Threads


Empfohlene Beiträge

Geschrieben

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ß

Geschrieben

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

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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...