黑马程序员技术交流社区

标题: 异常报错问题 [打印本页]

作者: 凡延海    时间: 2012-5-21 15:01
标题: 异常报错问题
import java.io.*;
public class ExceptionTest {


public static void main(String[] args) {
  
  try
  {
   FileInputStream fis=new FileInputStream("a.txt");
   while((fis.read())!=-1)
   {
    System.out.println((char)(fis.read()));
   }
   fis.close();
  }
  catch(IOException e)
     {
      System.out.println("输入输出错误");
      e.printStackTrace();
     }
     catch(FileNotFoundException e)
  {
   System.out.println(" 找不到文件");
   e.printStackTrace();
  }
}
}
我编译的时候就说已经捕获到异常了,为什么呢,不是已有在运行的时候才可以捕获到异常么?
作者: 袁培育    时间: 2012-5-21 15:19
是因为你上面有一个IOException ,下面的FileNotFoundException是IO异常的子类,上面捕获IO异常时把这个FileNotFoundException异常也捕获了,所以编译时会出错。你如果想专门捕获FileNotFoundException异常的话,可以把两个catch换下位置就行了。
作者: 付信榕    时间: 2012-5-21 15:22
异常分为两种:编译时异常和编译时不被检测的异常(运行时的异常,RuntimeException和其子类)。报异常有时候是程序自身的错误  大部分是你程序逻辑有错误。
作者: 赵玮_Tom    时间: 2012-5-21 15:23
兄弟,两个catch的内容弄反了,应该是更具体的异常在前面。
FileNotFoundException 属于IOException;你这样的代码,永远捕获不到FileNotFoundException。
所以,把两个catch颠倒一下就ok了{:soso_e113:}
作者: 凡延海    时间: 2012-5-21 15:42
嗯我去看API文档了,发现是的FileNotFoundException类是IOException的子类,还有很多的类,要记住还真不容易,看来要慢慢的记忆才行了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2