Java - Funktionsaufruf throws Exception von thread aus moeglich?

  • Hallo alle zusammen,

    vl. koennt ihr mir ja helfen, ich muesste eine Funktion welche eine Exception werfen darf
    von einem Thread aus aufrufen...

    der laesst mich natuerlich nicht, Fehler: Runnable overriden does not throw... und wenn ichs nicht mit
    throws Exception erweitere, dann hab ich must to be delcared or thrown...

    Danke schoen schon mal im Vorhinein,
    lg

  • Gegenfrage: Wohin soll ein Thread die Exception werfen?

    Ein Thread ist ja kein Methodenaufruf sondern ein separater Ablauf. Wie würdest du die Exception im Main Programm abfangen? Über der start Methode? Da wartet er nicht sondern geht in seinem Ablauf weiter, sonst wär es sinnlos nen Thread aufzuspannen. Du musst die Exception im gespawnten Thread behandeln. Dabei kannst du sie auch in eine geteilte Variable stopfen, aber ein throws im run Methodenheader macht einfach keinen Sinn.

    lg

    Einmal editiert, zuletzt von LordNecro (20. September 2012 um 12:05)


  • vl. koennt ihr mir ja helfen, ich muesste eine Funktion welche eine Exception werfen darf
    von einem Thread aus aufrufen...


    Wenn die Funktion eine Exception werfen darf und aus der run-Methode eines Threads aufgerufen werden soll, dann spricht doch nichts dagegen diese Exception in der run-Methode zu fangen und dort darauf zu reagieren, oder?

    Zitat

    der laesst mich natuerlich nicht, Fehler: Runnable overriden does not throw... und wenn ichs nicht mit
    throws Exception erweitere, dann hab ich must to be delcared or thrown...


    Wenn das Problem sein sollte, dass die Exception weitergeleitet werden soll, dann stellt sich jedoch die Frage: An wen? Den Starter des Threads? Oder sonst irgendwen?
    In diesem Fall würde ich mal das Package java.util.concurrent empfehlen und im speziellen das Interface Callable und je nach Aufgabenstellung mal in die Doku von FutureTask/ForkJoinTask, bzw. ExecutorService, ... reinschauen.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!