试着抓住不工作

时间:2016-03-26 15:14:33

标签: java try-catch

我的try / catch语句有问题。我知道它可能是一个简单的解决方案,但我是java的新手。 在这里,我希望控制台提示用户添加他们的初始存款,例如,如果我输入类似" hello"程序会崩溃而不是再问一次?感谢

以下是我收到的错误: 线程" main"中的例外情况java.util.InputMismatchException 在

java.util.Scanner.throwFor(未知来源)

at java.util.Scanner.next(Unknown Source)

at java.util.Scanner.nextInt(Unknown Source)

at java.util.Scanner.nextInt(Unknown Source)

 if(result=="DELETE")
  {
    var idx = $scope.ddUsers.indexOf(user);
    if(idx > -1 ){// make sure can index this object
       $scope.ddUsers.splice(idx, 1);
       $scope.showSimpleToast('Successfully deleted ' + user.user.name);
    else{
      // Ooops ... can't find it 
    }
  }

3 个答案:

答案 0 :(得分:2)

根据docs

方法nextInt抛出 InputMismatchException 而不是NumberFormatException

写道:

catch(InputMismatchException e){
       ....

更新: 我使用这个片段并输入数字作品

public static void main(String[] args) {

    Scanner keyboard = new Scanner(System.in);

    System.out.println("Please enter an initial deposit:");

    try {
        int numberEntered = keyboard.nextInt();
        System.out.println(numberEntered);

    } catch (InputMismatchException e) {

        System.out.println("Invalid input");

        System.out.println("Please enter an account number:");
    } finally {
        keyboard.close();
    }
}

console:

Please enter an initial deposit:
55
55

Process finished with exit code 0

答案 1 :(得分:1)

  1. 你没有得到你抓到的例外。相反,您将获得InputMismatchException。

  2. 由于您尝试在catch语句中再次获取输入,因此您必须再次提供无效输入。但那么谁正在捕捉这个例外?没有人。因此,您的程序将退出。此外,我没有看到超出该行的任何代码。因此,它也可能是一个正常的退出。

答案 2 :(得分:0)

缺少第一个括号。我认为在println之后(“Invalid Input”);。

如果仍然无法正常工作,请尝试捕获各种错误 catch(Exeption e){...}