Exception aus Thread.run() werfen

D

dto

Besteht die Möglichkeit eine Exception aus der run Methode eines Threads zu werfen?
Oder gibt es Techniken die dies simulieren?
 
Hallo,

du kannst aus so ziemlich jeder methode eine Exception werfen... wenn die Methode keine throws Klausel hat kannst du jedoch (ohne weiteres) nur RuntimeExceptions+ werfen. Das (direkte) werfen von CheckedExceptions verbietet der Kompiler. Es gibt aber trotzdem Wege auch eine CheckedException aus einer Methode ohne throws Klausel zu werfen, ohne das der Kompiler das anmeckert... das ist dann aber ein Hack.

Gruß Tom
 
Da ich eine RuntimeExceptions aber nicht fangen kann hilft mir das leider nicht weiter, da ich ja nicht vorhabe anderen zu schaden sondern dies nur an meinem eigenen code und nur für mich tuen will, besteht vielleicht die Möglichkeit mir mehr Informationen zum Thema zu geben oder eine ref. zum nachlesen.

Ist nur ne Frage!
 
Hallo,

was willst du denn genau machen?
Schau mal hier:
Java:
/**
 * 
 */
package de.tutorials;

import java.util.concurrent.TimeUnit;

/**
 * @author Thomas.Darimont
 */
public class ThreadExceptionExample {

  /**
   * @param args
   */
  public static void main(String[] args) {
    Thread thread = new Thread(new Runnable() {
      public void run() {
        System.out.println("AAA");
        try {
          TimeUnit.SECONDS.sleep(5);
        } catch (InterruptedException e) {
          e.printStackTrace();
        }
        System.out.println("BBB");

        throw new RuntimeException("Bubu");
      }
    }, "Processor");

    thread.setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {

      public void uncaughtException(Thread t, Throwable e) {
        System.out.println(String.format("Exception occured in Thread: %s Message: %s", t.getName(), e
          .getMessage()));
      }
    });
    
    thread.start();
  }

}

Ausgabe:
Code:
AAA
BBB
Exception occured in Thread: Processor Message: Bubu

Gruß Tom
 
Also das bringt mich auf jeden Fall schon ein Stück weiter, aber am besten wäre es wenn ich dies so abfangen könnte

try{
t1.start();
}catch(Exception e){
....
}
 
Zurück