gpt4 book ai didi

java - 可以使用 catch block 来继续代码而不是处理异常吗?

转载 作者:行者123 更新时间:2023-12-02 04:30:45 24 4
gpt4 key购买 nike

我有一些代码涉及检查用户输入以查看输入的输入是字符串还是整数,并将根据结果执行不同的代码。我使用 Integer.parseInt 来确定用户输入是否是整数,如果不是则抛出 NumberFormatException。

但是,为了控制代码流程,我使用了 try/catch 语句,其中 catch block 用于包含在用户输入是字符串(即 NumberFormatException)时抛出的代码。 .

Qn

这是使用 try/catch block 的可接受的方式吗?我尝试用谷歌搜索这个,但我能找到的只是用于处理抛出的异常的 catch block 的示例,而不是像我正在做的那样使用它。

import java.io.*;
import java.util.*;

public class Datafile{

private static Scanner input = new Scanner(System.in);

public static void main(String[] args) throws IOException {
BufferedWriter bw = new BufferedWriter(new FileWriter("C:\\Users\\Kence\\workspace\\Java 8 - Beyond the Basics - Working Files\\Practice Programs\\src\\Practice Data Edited",true));
String data = null;
boolean end = false;
boolean cont = true;
String dataEntered = null;
int menuChoice = printMenu();
while(!end){
switch(menuChoice){
case 1:
System.out.println("Please enter a line of data or press 0 to exit back to the main menu");
dataEntered = input.nextLine();
try {
if(Integer.parseInt(dataEntered) == 0){
break;
}
} catch (Exception e) {
data += dataEntered + "\n";
while(cont){
System.out.println("Data entered.Please enter the next line of data or press quit to exit back to the main menu.");
dataEntered = input.nextLine();
if(Integer.parseInt(dataEntered) == 0){
cont = false;
break;
}else{
data+= dataEntered;
System.out.println("Current data entered is " + dataEntered);
}
}


}


break;

case 2:
System.out.println("2 Entered");
break;
case 3:
System.out.println("3 Entered");
break;
case 4:
System.out.println("4 Entered");
break;
}//End of switch statement
menuChoice = printMenu();
}



input.close();
}//End of main



public static void printStars(){
for(int i = 0; i<66 ; i++){
System.out.print("*");
}
System.out.println();
}

public static int printMenu(){

printStars();
System.out.println("System Started");
printStars();
System.out.println("Enter 1 to input a new line of data");
System.out.println("Enter 2 to list all data");
System.out.println("Enter 3 to save existing data");
System.out.println("Enter 4 to load data");
printStars();
return Integer.parseInt(input.nextLine());
}

}

最佳答案

使用 try/catch block 进行控制流不被认为是最佳实践,但如果您不关心最佳实践,那么它是“可接受的”。

参见Determine if a String is an Integer in Java有关检查数字是否为整数的其他方法的示例。您可以使用这些示例之一,然后如果它是整数,则检查它是否等于零。

此外,在您的代码中,您对 Integer.parseInt(dataEntered) 的第二次调用似乎仍然会引发无法捕获的异常。

关于java - 可以使用 catch block 来继续代码而不是处理异常吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31492427/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com