使用catch块进行程序流程/制定决策

时间:2015-01-20 01:09:16

标签: java

正如我在下面的代码片段中所做的那样,使用catch块进行决策制定/程序流是一个好主意吗?如果我不这样做,我将不得不:

  • 允许通过扫描仪进行任何类型的输入
  • 测试输入(字符串)是否等于Q或q
  • 如果没有,测试是否有其他非整数类型,如果不是整数
  • 则打印错误
  • 将字符串解析/转换为int

这似乎比我下面的工作要多得多。事实是我允许我的程序为期望值(Q / q)抛出异常并使用catch块作为正常程序流程的“最佳实践”吗?还有其他方法可以解决我不考虑的问题吗?

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"); }
}

2 个答案:

答案 0 :(得分:0)

这是一项更多的工作,但强烈推荐。它可以提供更好的代码,因为:

  • 遵循标准编程惯例
  • 提高代码效率。通过异常处理处理流程更加昂贵,并且您正在重新执行catch块中的部分处理。
  • 使代码对于其他程序员来说更具可读性和可维护性。

答案 1 :(得分:0)

没有错,只要它不影响优化。尝试将“try-catch”代码的性能与其他方法进行比较。如果错了,请纠正我