Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用catch块进行程序流/决策_Java - Fatal编程技术网

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

Java 使用catch块进行程序流/决策,java,Java,像我在下面的代码片段中那样使用catch块进行决策/程序流是一个好主意吗?如果我不这样做,我将不得不: 允许通过扫描仪进行任何类型的输入 测试输入(字符串)是否等于Q或Q 如果不是,则测试其是否为其他非整数类型,如果不是整数,则打印错误 将字符串解析/强制转换为int 这似乎比我下面要做的工作多得多。我允许我的程序为期望值(Q/Q)抛出异常,并将catch块用作正常程序流,这是一种“最佳实践”吗?有没有其他我没有考虑的解决这个问题的方法 try { System.out.print

像我在下面的代码片段中那样使用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"); }
}

这是一个多一点的工作,但强烈建议。它有助于生成更好的代码,因为:

  • 它遵循标准编程约定
  • 使代码更高效。通过异常处理处理流程的成本更高,并且您正在catch块中执行部分处理
  • 使代码更具可读性和可维护性,以供其他程序员使用

    • 只要不影响优化,就没有问题。尝试比较“try-catch”代码和其他方法的性能。如果错误,请纠正我

      捕获异常是一项昂贵的操作,不应成为正常工作流程的组成部分。顾名思义-这应该是一个例外-不是正常情况。调用
      System.exit
      也不是停止应用程序的好方法。明白-这只是暂时的。为什么不直接使用
      Scanner
      中的
      hasnetint
      ?这还不够回答。最好用源代码解释