throw new Exception(exception.toString());
throw new ChildException(exception);
    public void runOrTimeout(long timeout) throws Exception {      //running thread      timeoutThread = Thread.currentThread();      //increment..the bigger the less cpu we use...but slower downloads      int step = 100;      //reset outputs      exception = null;      done = false;      //start thread with a task that might timeout      new Thread(new Runnable() {        public void run() {          try {            TimeoutWorker.this.run();          }          catch (Exception e) {            e.printStackTrace();            TimeoutWorker.this.exception = e;          }          done = true;        }      }).start();      while (timeout > 0) {        Thread.sleep(step);        timeout -= step;        if (exception != null)          throw new Exception(exception.toString());        if (done)          return;      }      //should probably mark th somehow so it doesn't try to set any values once it times out      throw new IOException("Timeout exceeded"); //$NON-NLS-1$    }