尝试,渔获物和异常处理

问题描述:

Test类:尝试,渔获物和异常处理

package learning; 

import java.io.IOException; 
import java.util.Scanner; 

public class Test { 
    static Scanner user = new Scanner(System.in); 
    public static void main(String[] args) { 
     Test2 t = new Test2(); 
     try { 
      t.run(0); 
     } catch (Exception e) { 
      try { 
       t.run(user.nextInt()); 
      } catch (Exception ee) { 
       try { 
        t.run(user.nextInt()); 
       } catch (Exception dd) {} 
      } 
     } 
    } 
} 

Test2类:

package learning; 

import java.io.IOException; 

public class Test2 extends Test { 
    public int x = 0; 

    public void run(int a) throws Exception, IOException { 
     do { 
      if (a > 1) 
       System.out.println(a); 
      x = x + 1; 
      if (a < 1) { 
       System.out.println("you're wrong"); 
       throw new Exception(); 
      } 
     } while (x==0); 
    } 
} 

它会停止,如果a > 0运行,但是当我用绳子回答它也将停止运行。我如何让程序再次提出要求,如果我输入2次低于1的数字,它也将停止运行,我该如何使它无限?

+0

你能重新格式化你的代码吗? – fge 2015-02-09 00:00:14

+0

希望有一天你会发现,在许多情况下抛出异常并不是一件好事,尤其是抛出异常而没有消息。而且,一个数量巨大的try-catch块是可怕的。 – 2015-02-09 00:23:38

+0

不知道你为什么运行(0)和运行(nextInt())。也许你可以解释一下自己? – eckes 2015-02-09 02:24:08

最简单的办法就是在其上放置一段时间(真)的循环。更好的编程实践可能包括在(开始)和设置开始时错误地通过干净处理。

在你的情况,我不知道你的意图是...所以下面应该工作。也摆脱那做while循环。说实话,这段代码完全可以写得更干净,但现在可以玩了。

public class Test { 
static Scanner user = new Scanner(System.in); 
public static void main(String[] args) { 
    Test2 t = new Test2(); 
    while(true) { 
     try { 
      t.run(user.nextInt()); 
      Thread.Sleep(50); 
     } catch (Exception e) { 
     } 
    } 
}