【问题标题】:Try-catch not working -InputMismatchExceptionTry-catch 不起作用 -InputMismatchException
【发布时间】:2018-05-07 16:40:37
【问题描述】:
System.out.println("Enter floor: ");
int f=x.nextInt();
p.setFloor(f);

此代码与一个对象相关联

public void setFloor(int floor){
    try{
        this.floor = floor ;
    }catch (InputMismatchException e){
        System.out.println("Enter only digits");
    }
}

输出

Enter floor:
hesdd
Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Unknown Source)
    at java.util.Scanner.next(Unknown Source)

为什么捕获不起作用?

【问题讨论】:

  • int f=x.nextInt(); 应该在 try/catch 块中
  • 你想试试这个int f=x.nextInt(); 不是吗
  • 你为什么期望this.floor = floor 抛出一个InputMismatchException?可以抛出异常的是 nextInt() 方法,但您不需要捕获它。相反,在尝试调用nextInt()之前先调用hasNextInt()

标签: java oop exception-handling inputmismatchexception


【解决方案1】:

InputMismatchException在调用Scanner.nextInt时被抛出,你应该立即抓住它:

int f;
try {
   f = x.nextInt();
}catch (InputMismatchException e){
    System.out.println("Enter only digits");
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    相关资源
    最近更新 更多