T
Thread-Ersteller
Gast
Guten Tag die Herren (und Damen),
ich habe derzeit ein Designproblem.
Kurz skizziert:
Ich habe einen / mehrere Threads in denen irgendwas passiert (oh, Wunder!).
Nun kann es jedoch passieren, dass in einem Thread eine Exception fliegt. Leider kann ich die nicht einfach so lange weiter reichen, bis sie in einem Logikgerüst angelangt, wo entsprechend darauf reagiert werden kann.
Konkret:
In dem jeweiligen Thread wird über ein Socket etwas eingelesen. Dabei kann eben eine Exception fliegen. Nur frage ich mich nun, wie ich darauf reagieren soll. Wenn über das Socket nichts gelesen werden kann, okay, dann ist das ungut. Ich könnte die Exception in der run() Methode abfangen und dann mit "nichts" darauf reagieren. Allerdings muss dann der Hauptteil des Programms über das Unglück berichtet werden. Nur will ich in den Thread keine Programmlogik unterbringen, weil das Thread-Konstrukt relativ ünabhängig sein soll:
Wie löse ich also nun das Problem elegant?
Ich hoffe, dass man mir irgendwer helfen kann.
Mit freundlichen Grüßen
ich
ich habe derzeit ein Designproblem.
Kurz skizziert:
Ich habe einen / mehrere Threads in denen irgendwas passiert (oh, Wunder!).
Nun kann es jedoch passieren, dass in einem Thread eine Exception fliegt. Leider kann ich die nicht einfach so lange weiter reichen, bis sie in einem Logikgerüst angelangt, wo entsprechend darauf reagiert werden kann.
Konkret:
In dem jeweiligen Thread wird über ein Socket etwas eingelesen. Dabei kann eben eine Exception fliegen. Nur frage ich mich nun, wie ich darauf reagieren soll. Wenn über das Socket nichts gelesen werden kann, okay, dann ist das ungut. Ich könnte die Exception in der run() Methode abfangen und dann mit "nichts" darauf reagieren. Allerdings muss dann der Hauptteil des Programms über das Unglück berichtet werden. Nur will ich in den Thread keine Programmlogik unterbringen, weil das Thread-Konstrukt relativ ünabhängig sein soll:
Code:
// e ist ein Objekt, dessen Methode aufgerufen wird, wenn der Lesevorgang abgeschlossen ist
public void asyncRead(OperationDoneEvent e) {
new EventThread(e) {
public void run() {
try {
// rdr ist der InputStream des Sockets
int val = rdr.read();
// getEvent() ist das oben beschriebene Objekt e
getEvent().OperationFinished(ba);
}
catch (IOException ex) {
// Tja, und nun?
}
}
}.start();
}
Wie löse ich also nun das Problem elegant?
Ich hoffe, dass man mir irgendwer helfen kann.
Mit freundlichen Grüßen
ich