检查性异常和非检查性异常
从网上查的资料进行整理
一、异常
1、所有的异常类是从 java.lang.Exception 类继承的子类。Exception 类是 Throwable 类的子类。
2、所有的非检查性异常都继承自java.lang.RuntimeException。
3、所有的检查性异常都继承自java.lang.Exception,是RuntimeException以外的异常;
二、区别:
1、检查性异常:编译器要检查这类异常,检查的目的一方面是因为该类异常的发生难以避免,另一方面就是让开发者去解决掉这类异常,所以称为必须处理(try ...catch)的异常。
如果不处理这类异常,集成开发环境中的编译器一般会给出错误提示。
如果一个方法没有捕获一个检查性异常,那么该方法必须使用 throws 关键字来声明。throws 关键字放在方法签名的尾部。
2、非检查性异常:编译器不会检查这类异常,不检查的则开发者在代码的编辑编译阶段就不是必须处理,这类异常一般可以避免,因此无需处理(try ...catch)。
如果不处理这类异常,集成开发环境中的编译器也不会给出错误提示。
三、举例
1、常见的运行时异常:空指针异常(NullPointerException)、除零异常(ArithmeticException)、数组越界异常(ArrayIndexOutOfBoundsException)等;
2、常见的检查性异常:输入输出异常(IOException)、文件不存在异常(FileNotFoundException)、SQL语句异常(SQLException)等。