尝试、捕获和异常处理
Try, catch and Exception handling
Test
class:
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
class:
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(true) 循环。更好的编程实践可能包括通过执行 while(started) 和将 started 设置为 false 来正确处理。
在你的情况下,我不确定你的意图是什么......所以下面应该有效。还要摆脱那个 do 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) {
}
}
}
Test
class:
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
class:
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(true) 循环。更好的编程实践可能包括通过执行 while(started) 和将 started 设置为 false 来正确处理。
在你的情况下,我不确定你的意图是什么......所以下面应该有效。还要摆脱那个 do 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) {
}
}
}