Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Exception weiterleiten bei Abstrakten Methoden ( run )
Hallo zusammen!
Ich hab ein Thread. Jetzt wird im Runteil was verarbeitet. Jedoch soll er den thread beenden und eine Fehlermeldung weiterleiten können, wenn bei der verarbeitung was schief läuft.
weiterleiten wohin?
an irgendein Objekt? nix leichter also das:
objekt.hierHastDuWas(parameter);
der Thread wird durch Auslaufen der run-Operation beendet
(Ende einer Schleife durch Schleifenbedingung oder break;/
Überspringen des restlichen Codes per if/ else)
Exception catchen, in eine RuntimeException verpacken und diese werfen. Da die run()-Methode in Thread und/oder Runnable keine checked-Exception deklariert, ist das der einzige Weg ...
das ist keine 'abstrakte Methode', und es geht wohl auch nicht um 'final deklarierte Klassen',
sondern eher um eine anonyme innere Klasse und die Deklaration von Objekten/ Variablen?
wenn dir die Java-Sprache nicht zusagt, dann verwende lieber (mehr/ auch) Code-Beispiele (mit mehr als 2 Zeilen)
-------
und ja, deklariere sie als final, das ist das einfachste in dem Moment
Du meinst möglicherweise die "anonymous inner class", die durch das Konstrukt
Code:
new Runnable() {
public void run() {
}
}
geschaffen wird. In dieser Methode dürfen Variablen aus dem Kontext "drumherum" nur dann verwendet werden, wenn sie final deklariert sind (das bedeutet aber nicht, dass die jeweiligen Klassen final sein müssten). Das hat damit zu tun, wie solche "anonymous inner classes" vom Compiler behandelt werden; es kann ja passieren, dass die in der anonymous inner class definierte Methode erst aufgerufen wird, wenn die Methode, in der die Klasse deklariert wurde, bereits beendet wurde und damit alle lokalen Variabel "out-of-scope" gegangen und ggfs. bereits vom Garbage-Collector beseitigt worden sind. Aus diesem Grund werden beim Übersetzen der anonymous inner class automatisch Kopien der lokalen Variablen angelegt. Und da diese bei Änderungen der lokalen Variablen nicht automatisch aktualisiert werden könnten, werden solche nachträglichen Änderungen zuverlässig verhindert, indem der Compiler eben darauf besteht, dass die verwendeten lokalen Variablen als final deklariert sind und sich daher nicht mehr ändern lassen.