JAVA线程控制超时问题 
public class TimeoutThread extends Thread{ 
   
 /** 
  * 计时器超时时间 
  */ 
 private long timeout; 
  
 /** 
  * 计时是否被取消 
  */ 
 private boolean isCanceled = false; 
  
 private boolean flag = false; 
   
 /** 
  * 当计时器超时时抛出的异常 
  */ 
 private TimeoutException timeoutException; 
  
 /** 
  * 构造器 
  * @param timeout 指定超时的时间 
  */ 
 public TimeoutThread(long timeout,TimeoutException timeoutErr) { 
  super(); 
  this.timeout = timeout; 
  this.timeoutException = timeoutErr; 
  //设置本线程为守护线程 
  this.setDaemon(true); 
 } 
  
 /** 
  * 取消计时 
  */ 
 public void cancel() 
 { 
  isCanceled = true; 
 } 
  
 /** 
  * 启动超时计时器 
  */ 
 public void run() 
 { 
  try { 
  
   Thread.sleep(timeout); 
   if(!isCanceled){ 
    throw  timeoutException; 
   } 
  } catch (InterruptedException e) { 
   e.printStackTrace(); 
  }   
 } 

public class TimeoutException extends RuntimeException {  /** 
  * 序列化号 
  */ 
 private static final long serialVersionUID = -8078853655388692688L;  public TimeoutException(String errMessage) 
 { 
  super(errMessage); 
 } 

public class Test { 
boolean flag = false; 
TimeoutThread t = new TimeoutThread(60,new TimeoutException("超时")); 
  try{  
   t.start(); 
   double i = 1; 
  while(i>0){ 
  i++; 
  } 
   t.cancel();     
   System.out.println("超时"); 
   System.out.println(i); 
  }catch (TimeoutException e) 
  { 
   System.out.println("111111111111"); 
   System.out.println("超时"); 
  } 


运行main的时候怎么捕获不到 TimeoutException啊 谁帮帮我啊!!!!!!!!!