Java中的部分异常是由异常类在系统中事先定义好的,称为标准异常类。异常类由throwable异常类派生而来。throwable异常类有两个直接子类:Exception和Error
Error是与硬件相关的异常类,由系统自动处理,不需要开发者处理。
Exception是程序中的异常,它也有两种情况:运行时异常和检查时异常。顾名思义,运行时异常是编译没问题,但是在运行时发生的异常; 而检查时异常是在编译时发现的异常,需要修改好后才能编译通过。
前面列举的算数异常、空指针异常和数组下标越界异常,找不到文件等都属于运行时异常。而不属于运行时异常的都是检查型异常,两者互为补集。下面举一个检查型异常的例子:
import java.io.IOException; //引入java的io异常类
public class testException{
public static void main(String[] args){
char c;
try{ //处理异常的语句
c = (char)System.in.read(); //从键盘接收一个字符
}catch(IOException e){ //处理异常的语句
System.out.println("Your input is wrong!"); //处理异常的语句
}
}
}
在上面的例子里,如果不写处理异常的3句语句的话,编译就会出错
系统说:must be caught or declared to be thrown
就是让开发者把处理异常的语句也写好,写好之后,编译才会过。