A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 不可言 中级黑马   /  2014-6-19 20:55  /  834 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 不可言 于 2014-6-20 12:46 编辑
  1. public static void main(String[] args) throws IOException
  2.         {
  3.                 Scanner sc = new Scanner(System.in);
  4.                 while(true){
  5.                         try{
  6.                                 int num = sc.nextInt();   //抛出异常后,就会循环执行catch里面的代码,
  7.                                 break;

  8.                         }catch(InputMismatchException e){
  9.                                  //当蒱获异常
  10.                                 System.out.println("Error\t"+e.getMessage());
  11.                         }
  12.                 }
  13.         }
复制代码

1.PNG (55.59 KB, 下载次数: 9)

1.PNG

10 个回复

倒序浏览
为什么会出现这样的情况,如何解决?(46)
回复 使用道具 举报
你这是死循环啊,会一直循环,直到内存空间没地方了才会停止,而且你这里没有异常啊,catch抓不到异常为null
回复 使用道具 举报
用Scanner也有异常吗?没有见过,来学习下
回复 使用道具 举报
表示没看懂!
回复 使用道具 举报
while(true)一直循环catch内容,你给catch代码块最后也加个break
回复 使用道具 举报
你应该把while(ture)放在try 里面 ,你那样的话一接一个非整型的数据就会发生异常,执行不到break语句,所以一直循环
回复 使用道具 举报
楼上的正解,不过你已经抛了异常怎么还去捕获啊
回复 使用道具 举报
对,这是死循环,你可以把true条件该一改
回复 使用道具 举报
这有什么不懂啊 ,catch捕获异常然后,在while(true)里面循环啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马