我试图执行尝试并捕获方法参数,但我无法做到这一点,当程序运行时,它给出了错误号格式错误,而不是执行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)
#
您的代码不会抛出任何类型的异常,因此根本不会执行catch块。
简单来说,try块中的代码没有任何类型的运行时错误,因此根本无法访问catch块。只有当try块中的代码抛出异常时才会执行Catch块。
仅当catch
块中的代码产生此类型的异常时,才会执行处理特定类型异常的try
块。因此,只有当catch
块中的代码抛出try
时才能执行NumberFormatException
中的代码,但事实并非如此。你必须在try
块中显式抛出这样的异常,或者调用一个可以抛出它的方法。
try {
if (someCondition) {
throw new NumberFormatException();
}
} catch (NumberFormatException exp) {
System.out.println("Invalid format" + e.getMessage());
}
这里不需要try和catch块。参数也是int数组,你不能为参数传递字符串。您可以使用下面的内容,将考虑第二个ASCII值。
int arr[] = {100,'e'};