尝试,渔获物和异常处理
问题描述:
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的数字,它也将停止运行,我该如何使它无限?
答
最简单的办法就是在其上放置一段时间(真)的循环。更好的编程实践可能包括在(开始)和设置开始时错误地通过干净处理。
在你的情况,我不知道你的意图是...所以下面应该工作。也摆脱那做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) {
}
}
}
你能重新格式化你的代码吗? – fge 2015-02-09 00:00:14
希望有一天你会发现,在许多情况下抛出异常并不是一件好事,尤其是抛出异常而没有消息。而且,一个数量巨大的try-catch块是可怕的。 – 2015-02-09 00:23:38
不知道你为什么运行(0)和运行(nextInt())。也许你可以解释一下自己? – eckes 2015-02-09 02:24:08