该如何做这样的异常处理??我这样做的:
try {
areaSiz = scanner.nextInt();
} catch (Exception e) {
System.out.println("类型不匹配,请重新输入");
areaSiz = s.nextInt();
}
我故意去输入了非int型的数据,虽然“类型不匹配,请重新输入”这句话输出了,但是还有会报InputMismatchException
该怎样捕捉和解决这样的异常????

解决方案 »

  1.   

    因为你用scanner.nextInt() 去读一个非整型的数 并没有读进去, 然后再catch里面 scanner.nextInt()仍然是读得刚才那个非整型数
      

  2.   


    while(true){
    String str = scanner.next();
    try {
    int x = Integer.parseInt(str);
    System.out.println(x);
    } catch (NumberFormatException e) {
    System.out.println("类型不匹配,请重新输入");}
    }
      

  3.   

    -java.lang.Exception
      -java.lang.RuntimeException
        -java.util.NoSuchElementException
          -java.util.InputMismatchException
    对于RuntimeException异常,一旦产生,程序无法继续运行,必须处理---【个人意见,等大牛解答】
      

  4.   

    正解,“当某一扫描器抛出 InputMismatchException 时,该扫描器不会传递导致该异常的标记,因此可以通过其他某种方法来获取或跳过它。”-取自Scanner API
      

  5.   

    不用试了。,没问题的,另外lz多看看java的api就好了
      

  6.   

    API 和 JDK 源码是很好的2样东西。