TimerTask => throw Exception

mariusmeier

Mitglied
Hallo zusammen

Wieso gibt der TimerTask keine Exception weiters? Wenn ich eine neue Exception werfe wird diese gar nicht nach oben durchgereicht:

Java:
throw new RuntimeException("blabla");

Was ist genau das Problem mit diesem verfluchten TimerTask... ?

MFG
 
Ok war nicht präzise. Mein Timer Task wird folgendermassen erstellt:

Java:
try {
								releaseTimer = new Timer();
								releaseTimer.schedule(new ReleaseQueueTask(deviceAddress, deviceType), releaseTime);
							} catch (RuntimeException e) {
								throw new ErrorException(e);							}

Der TimerTask steckt wiederum in einem Thread drinn. Im TimerTask werfe ich wie oben schon geschrieben mit "throw ...." meine RuntimeException. Leider bleibt aber die Exception auf der Linie stehen, auf welcher ich "throw ... " aufrufe. Sprich sie wird nicht durchgereicht zu den try / catch Elementen, welche RuntimeExceptions abfangen... warscheindlich mach ich das falsch?

MFG
 
ich habe zwei Sätze in meinem Posting geschrieben, dein Fehler war den zweiten (und dann viel mehr) nicht zu lesen,
besonders den zweiten Link
 
Hallo

Mh ich verstehe die Sache überhaupt nicht. Habe deine beiden Links schon zweimal durchgelesen, bin daraus aber nicht wirklich schlau geworden. Dort wird jeweils das Beispiel gemacht, dass im Thread ein Thread.sleep gemacht wird welches dann eine Exception werfen kann.... ich jedoch will so oder so eine Exception werfen wenn der Thread das Ende erreicht (throw). Mein Problem ist folgendes: Ich habe einen Controller, welcher die Kommunikation mit verschiedenen Geräten übernimmt... falls dort im Kontroller diese Exception geworfen wird, soll das GUI benachrichtigt werden und einen Dialog anzeigen. Ich könnte ja einen Listener implementieren, will ich aber nicht. Das muss mit diesen try-catch oder throws gehen... du musst mir trotzdem nochmals ein Beispiel machen.... bitte.
 
also mein erster Beitrag
http://www.java-forum.org/java-basi...04092-exception-thread-werfen.html#post663486
im zweiten Thema passt eigentlich 1:1, da du quasi die gleiche Frage stellst,

dein try/catch gilt nur für den Start des Threads bzw. hier der Übergabe des Tasks, danach läuft der Aufrufer weiter, verläßt den catch-Block,
der Task wird als Thread asynchron/nebenläufig potentiell erst Minuten später ausgeführt, während der Aufrufer völlig anderen Code bearbeitet,

deswegen macht man das ja gerade nebenläufig,
wenn du mit try/catch warten willst, dann führe einen normalen Methodenaufruf aus


falls du keine Nebenläufigkeit brauchst, sondern nur die Zeit-Kontrolle, dann hast du mit dem Timer in Hinsicht auf Exception-Handling so wie du es gepostet hast eher zusätzliche Arbeit,
eine einfache while-Schleife mit Thread.sleep() für Pause wäre dagegen nicht nebenläufig
 
Zuletzt bearbeitet von einem Moderator:

Neue Themen


Zurück
Oben