Java中的异常类型

inj*_*t0r 3 java exception checked-exceptions

我对Java中的异常类型感到困惑.在许多教程网站上,我看到java中存在两种类型的异常

  1. 编译时间异常
  2. 运行时异常

但是当我与一些java大师交谈时,根据它们没有像编译时异常这样的东西.他们说编译时错误也不例外,我在Java文档中也没有发现编译时异常.但是当我运行以下程序时

File f = new File("C:/Documents and Settings/satyajeet/Desktop/satya.txt");
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);
String s = br.readLine();
System.out.println(s);
Run Code Online (Sandbox Code Playgroud)

如果尝试捕获未提供,我得到低于输出.

D:\jdk1.6.0_19\bin>javac Testing.java
Testing.java:7: unreported exception java.io.FileNotFoundException; must be caught or declared to be thrown
     FileReader fr=new FileReader(f);
                   ^
Testing.java:9: unreported exception java.io.IOException; must be caught or declared to be thrown
      String s=br.readLine();
                          ^
2 errors
Run Code Online (Sandbox Code Playgroud)

那么我应该考虑这个错误或编译时异常吗?

Men*_*ena 7

Java中有3种类型的Throwable.

  • 检查Exceptions(Exception和链下,保存RuntimeException).这些由编译器检查,必须在抛出时捕获.它们表示通常可恢复的异常条件,例如,在文件系统上找不到引用的文件时(请参阅参考资料FileNotFoundException).
  • 未选中或运行时Exceptions(子项RuntimeException).这些可以抛出而不会被抓住.它们通常表示编程错误,例如调用null对象上的方法(请参阅参考资料NullPointerException).
  • Errors.这些也是未经检查的.当发生非常错误时,JVM会抛出它们,通常超出了开发人员的直接控制范围(例如,内存不足,请参阅OutOfMemoryError).当您的代码编译失败时,Java编译器会发出编译器错误,原因有很多,例如语法错误,调用不明确,无法捕获检查Exception等等.