尝试并捕获int数组不能按预期工作

问题描述 投票:-3回答:3

我试图执行尝试并捕获方法参数,但我无法做到这一点,当程序运行时,它给出了错误号格式错误,而不是执行catch块中的代码

任何帮助表示赞赏。我是java和编程的初学者。感谢您抽出宝贵时间阅读我的问题。

 public void inputCheck(int[] checkUserInput) {
            try {
                if (!(checkUserInput[1] <= 10 && checkUserInput[1] % 2 == 0)) {

                    errorMessage = "failEven";
                } else if (checkUserInput[0] < 20 || checkUserInput[0] > 80) {

                    errorMessage = "failRange";

                } else if ((checkUserInput[0] >= 20 || checkUserInput[0] <= 80)
                        && (checkUserInput[1] <= 10 && checkUserInput[1] % 2 == 0)) {
                    errorMessage = "checkpassed";
                }

            } catch (NumberFormatException e){
                System.out.println("Please enter an number");
            }

        }

错误信息

 Exception in thread "main" java.lang.NumberFormatException: For input string: "e"
        at java.lang.NumberFormatException.forInputString(Unknown Source)
        at java.lang.Integer.parseInt(Unknown Source)
        at java.lang.Integer.parseInt(Unknown Source)
        at UserInput.promptUser(UserInput.java:27)
        at MainClass.main(MainClass.java:11)
    #
java arrays try-catch numberformatexception
3个回答
0
投票

您的代码不会抛出任何类型的异常,因此根本不会执行catch块。

简单来说,try块中的代码没有任何类型的运行时错误,因此根本无法访问catch块。只有当try块中的代码抛出异常时才会执行Catch块。


0
投票

仅当catch块中的代码产生此类型的异常时,才会执行处理特定类型异常的try块。因此,只有当catch块中的代码抛出try时才能执行NumberFormatException中的代码,但事实并非如此。你必须在try块中显式抛出这样的异常,或者调用一个可以抛出它的方法。

  try {

    if (someCondition) {
       throw new NumberFormatException();
    }

  } catch (NumberFormatException exp) {
      System.out.println("Invalid format" + e.getMessage());
  } 

0
投票

这里不需要try和catch块。参数也是int数组,你不能为参数传递字符串。您可以使用下面的内容,将考虑第二个ASCII值。

int arr[] = {100,'e'};
© www.soinside.com 2019 - 2024. All rights reserved.