![](/img/trans.png)
[英]JAVA: Problems with Exception-Handling? Program only catches Exception once
[英]Exception Handling works only once in running program
最初我试图将try
语句放入while
循环中,但是,遇到了几个错误。 该程序运行完美,除非我输入一个不规则字符,一旦它给我输入我创建的打印行,但是,当我再次输入另一个时,该行不会弹出,而是给我一个格式异常错误。
AddNumbersrealone2.java
import java.io.*;
// create the class
public class AddNumbersrealone2
{
// allows i/o
public static void main (String [] args) throws IOException
{ // initalize variables and strings
BufferedReader myInput = new BufferedReader (new InputStreamReader (System.in));
String sumNumbers;
//String go;
double num ;
double total = 0.0;
// asks user questions and instructions
System.out.println("Hello, the following program will ask for your input of a number ");
System.out.println("Each time you input a number a running total will be added to each previous number") ;
System.out.println("Once ready input a number to start!");
// try and catch block
try {
num = 0;
// while statement if this occurs stop the program, in this case if a negative integer is inputted
while (num >= 0) {
// Contious question asked
System.out.println("Input another number...");
sumNumbers = myInput.readLine();
num = Double.parseDouble (sumNumbers);
// calculates number (Running total)
total = total + num;
System.out.println(total);
// end error trap
}
}
catch (Exception e){
System.out.println("Please refrain from entering regular characters!");
num = 0;
// re- while statement if this occurs stop the program, in this case if a negative integer is inputted
while ( num >= 0) {
// input question after a character is inputted
System.out.println("Please input a number: ");
sumNumbers = myInput.readLine();
num = Double.parseDouble (sumNumbers);
total = total + num;
System.out.println(total);
// ending statement
}
}
System.out.println("You entered a negative number, the program will exit now");
System.out.println("Good-bye!");
// Complete class body
}
}
你想要一些东西来捕捉Double.parseDouble周围的异常
例如。
while(num >= 0)
{
// input question after a character is inputted
System.out.println("Please input a number: ");
sumNumbers = myInput.readLine();
try{
num = Double.parseDouble (sumNumbers);
total = total + num;
System.out.println(total);
} catch(Exception e)
{
System.out.println("Please enter a proper number");
}
// ending statement
}
您的问题是,只要抛出第一个异常,您的程序就会陷入catch语句内的while()循环中。 因此,如果输入了另一个无效输入,则在第二个while循环中处理它,其中没有try-catch语句。 一个很好的解决方法是让你的try语句只包含你所说的num = Double.parseDouble(sumNumbers);的行。 捕获异常时,以continue结束; 声明,以便您的程序循环回头,并要求另一个输入。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.