Java 使用catch块进行程序流/决策
像我在下面的代码片段中那样使用catch块进行决策/程序流是一个好主意吗?如果我不这样做,我将不得不:Java 使用catch块进行程序流/决策,java,Java,像我在下面的代码片段中那样使用catch块进行决策/程序流是一个好主意吗?如果我不这样做,我将不得不: 允许通过扫描仪进行任何类型的输入 测试输入(字符串)是否等于Q或Q 如果不是,则测试其是否为其他非整数类型,如果不是整数,则打印错误 将字符串解析/强制转换为int 这似乎比我下面要做的工作多得多。我允许我的程序为期望值(Q/Q)抛出异常,并将catch块用作正常程序流,这是一种“最佳实践”吗?有没有其他我没有考虑的解决这个问题的方法 try { System.out.print
- 允许通过扫描仪进行任何类型的输入
- 测试输入(字符串)是否等于Q或Q
- 如果不是,则测试其是否为其他非整数类型,如果不是整数,则打印错误
- 将字符串解析/强制转换为int
try
{
System.out.print("Enter the numerator: ");
num = scan.nextInt();
goodNumerator = true;
}
catch (InputMismatchException ex )
{
String input = scan.next();
if (input.toLowerCase().equals("q"))
{
System.out.println("User exited");
System.exit(0);
}
else { System.out.println("Please enter a valid numerator"); }
}
这是一个多一点的工作,但强烈建议。它有助于生成更好的代码,因为:
- 它遵循标准编程约定
- 使代码更高效。通过异常处理处理流程的成本更高,并且您正在catch块中执行部分处理
- 使代码更具可读性和可维护性,以供其他程序员使用
- 只要不影响优化,就没有问题。尝试比较“try-catch”代码和其他方法的性能。如果错误,请纠正我捕获异常是一项昂贵的操作,不应成为正常工作流程的组成部分。顾名思义-这应该是一个例外-不是正常情况。调用
System.exit
也不是停止应用程序的好方法。明白-这只是暂时的。为什么不直接使用Scanner
中的hasnetint
?这还不够回答。最好用源代码解释