use*_*043 2 java exception-handling try-catch throw while-loop
这是我第一次使用异常处理,所以要温柔。我有一个简单的 blob 类,它接受一个 ID,该 ID 必须在 30 到 50 之间,否则会引发异常。
public class Blob {
int id;
public Blob() {
}
public Blob(int id) throws Exception {
this.id = id;
if (id < 30 || id > 50)
throw new Exception ("id = " +id+ ", must be between 30 and 50 inclusive");
}
}
Run Code Online (Sandbox Code Playgroud)
它应该提示用户输入一个 id,如果它不在 30 到 50 之间,则抛出异常,并且应该继续直到用户输入有效的输入,然后只显示 id 号。
public class BlobCreator {
public static void main(String[] args) {
int id;
Scanner scan = new Scanner(System.in);
System.out.println("Enter ID number: ");
id = scan.nextInt();
do {
try {
Blob b = new Blob(id);
}
catch (Exception e) {
System.out.println(e);
}
System.out.println("Enter a different ID: ");
id = scan.nextInt();
}
while(true);
}
System.out.println("Blob ID: " +id);
}
Run Code Online (Sandbox Code Playgroud)
我认为我正确地使用了 throw 和 catch,但是我的循环不能正常工作,所以我认为这应该是一个简单的修复,但我无法做到恰到好处。还使用 while 循环,就像我对这种情况有最好的方法一样,还是有更好的方法来循环 throw 和 catch?
感谢您的任何帮助
您应该将 放在break;代码执行成功之后。
do {
try {
Blob b = new Blob(id);
break;
}
catch (Exception e) {
System.out.println(e);
}
System.out.println("Enter a different ID: ");
id = scan.nextInt();
} while(true);
Run Code Online (Sandbox Code Playgroud)
因此,每次循环到达其主体的末尾时,它都会跳出循环。只有blob在成功创建后才应该中断。虽然我不明白你为什么要放一个break。该while循环可以检查输入的输入是有效的,只是停止循环。
我while在do-while循环中修改了......通过使用true循环将永远运行,除非构造函数没有抛出异常......这使得代码更通用(如果你修改 blob 构造的条件,你不会必须修改while循环的条件)。
| 归档时间: |
|
| 查看次数: |
18468 次 |
| 最近记录: |