Java中抛出异常后,catch中的解决办法不是很懂

public static void main(String[] args) {
    int xuan;
    Scanner in=new Scanner(System.in);
    while (true) {
        System.out.println("请选择A冒险,B查看人物属性,C恢复体力");
        System.out.println("=====================================");
        try{
        xuan = in.nextInt();
        if (xuan==1) {
            System.out.println("1");
        } else if (xuan==2) {
            System.out.println("2");
        } else if (xuan==3) {
            System.out.println("你的血和魔法值都已恢复到满值状态!");
            System.out.println("=====================================");
        } else {
            System.out.println("你的选择有误!");
        }
        }catch(Exception e){
        //in=new Scanner(System.in);
        System.out.println("11");
        }
    }

}

catch中的new了一个Scanner对象,不知道为什么new了就可以达到我想要的结果,就是在循环中如果输入了一个错误的类型,提示错误,下一次循环可以再一次输入,然后再来try catch输入的类型符合不符合想要的类型.解决的办法有了就是在catch中new一个新的Scanner对象,为什么要新new一个就可以了呢?不new就会死循环.

很简单么,在try中会抛异常的语句就是xuan = in.nextInt();
就是拿到的数据不是int,不能赋给xuan,
所以要在catch中对in重新初始化一下,就像在程序一开始的地方。
不然的话,xuan = in.nextInt();会一直抛异常。

我也遇到过这种情况,现在有解决方法了 多谢了

当异常时,不执行异常抛出,把他当成的if else这样条件语句来处理

在catch里加上:in.next();   // 读取下一个值
在catch里加上:in.next();   // 读取下一个值