Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Exception Handling in Threads

Empfohlene Antworten

Veröffentlicht

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ß

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

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.