关于处理try-catch循环一次异常,次次异常的一个例子
2017-02-21 20:02
609 查看
学习Java过程中,遇到这么一道题:
从键盘输入一个整数,判断该数值是否大于当前月份。
<
4000
/span>由于从键盘输入的不一定是整数,我想用一个try-catch语句处理异常,并重新运行输入步骤。代码如下:
程序运行后,我输入字符 k ,结果程序循环输出:
输入类型错误,请重新输入一个整数
程序一直执行catch语句。
原因分析:
当错误字符 k 进入循环时,k 不是整数,产生异常,执行 catch 语句。但输入错误的字符由于发生异常,并没有从输入管道中提取出来,进而导致进行循环时依然产生异常。
解决的方法:
键盘输入的都可看成是字符型,在 Catch 语句中添加一个 String 类型变量 clear ,将错误字符读出,即可。
解决后代码为:
输出运行结果:
从键盘输入一个整数,判断该数值是否大于当前月份。
<
4000
/span>由于从键盘输入的不一定是整数,我想用一个try-catch语句处理异常,并重新运行输入步骤。代码如下:
import java.util.Calendar; import java.util.Scanner; public class TestScanner { public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.println("请输入一个整数:"); Calendar c = Calendar.getInstance(); //应用循环,当控制台输入的数不是整数时,重新输入一个数,重新判断 while (true) { try { int i = s.nextInt(); if (i > c.get(Calendar.MONTH) + 1) { System.out.println("该数值大于当前月份"); } else if (i < c.get(Calendar.MONTH) + 1) { System.out.println("该数值小于当前月份"); }else { System.out.println("该数值等于当前月份"); } break; } catch (Exception e) { System.out.println("输入类型错误,请重新输入一个整数:"); } } } }
程序运行后,我输入字符 k ,结果程序循环输出:
输入类型错误,请重新输入一个整数
程序一直执行catch语句。
原因分析:
当错误字符 k 进入循环时,k 不是整数,产生异常,执行 catch 语句。但输入错误的字符由于发生异常,并没有从输入管道中提取出来,进而导致进行循环时依然产生异常。
解决的方法:
键盘输入的都可看成是字符型,在 Catch 语句中添加一个 String 类型变量 clear ,将错误字符读出,即可。
解决后代码为:
import java.util.Calendar; import java.util.Scanner; public class TestScanner { public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.println("请输入一个整数:"); Calendar c = Calendar.getInstance(); //应用循环,当控制台输入的数不是整数时,重新输入一个数,重新判断 while (true) { try { int i = s.nextInt(); if (i > c.get(Calendar.MONTH) + 1) { System.out.println("该数值大于当前月份"); } else if (i < c.get(Calendar.MONTH) + 1) { System.out.println("该数值小于当前月份"); }else { System.out.println("该数值等于当前月份"); } break; } catch (Exception e) { System.out.println("输入类型错误,请重新输入一个整数:"); @SuppressWarnings("unused") String clear = s.next();//将错误字符移出输入管道 } } } }
输出运行结果:
相关文章推荐
- 关于java异常处理的几个关键字 try catch/throw/throws
- 建议64:为循环增加Tester-Doer模式而不是将try-catch置于循环内 如果需要在循环中引发异常,你需要特别注意,应为抛出异常是一个相当影响性能的过程。应该尽量在循环当中对异常发生的一
- try-catch一次只能捕获一个异常
- Java异常处理综合例子(try、catch、finally、throws、throw)
- java异常处理和自定义异常利用try和catch让程序继续下去(回来自己再写个例子试运行下)
- Java异常处理综合例子(try、catch、finally、throws、throw)
- 关于java异常处理的几个关键字 try catch/throw/throws
- java关于异常处理只使用try-finally而不使用catch
- 关于java异常处理的几个关键字 try catch/throw/throws
- Java异常处理综合例子(try、catch、finally、throws、throw) .
- JavaScript 异常处理Try{}catch(e){}
- JavaScript中的try...catch和异常处理
- Java的异常处理机制的一个例子-读后定能对异常理解深刻
- Python入门的36个例子 之 33 -> try – 异常是不可避免的,关键是怎样处理
- C++中异常处理的语法 try catch throw
- 一个关于行列处理的例子
- 关于Struts处理异常框架的小例子
- C++中的异常处理模块--try, throw, catch总结
- JAVA异常处理try...catch
- 关于异常,,try--catch 简单应用,