一、异常
所有异常都继承自java.lang.Throwable,它有两个直接的子类
1、Error
2、Exception
→RuntimeException
→CheckException
→IOException
→SQLException
如上就表示了对应子类的继承关系。
二、含义
Error:底层和硬件有关的错误,无法捕获,捕获了也没有用
Exception:程序本身抛出的异常,是程序是否严谨导致的,如果不主动捕获,则会被jvm处理
IOException/SQLException:不是程序本身的错误,只是外部因素如文件读写异常、数据库异常,为了保障程序的健壮性,必须要捕获。
总结:
受检异常:必须要捕获;
非受检异常:可捕获也可以不捕获;
处理是通过try/catch和throws
受检异常和非受检异常的处理方式如下:
1.受检异常:红字标注
public static void main (String[] args) throws SQLException {
}
public static void main (String[] args) {
try {
throws new SQLException ("sql error");
} catch (SQLException e) {
}
}
2.非受检异常:红字标注
public static void main (String[] args) {
throws new RuntimeException("it is wrong in running");
}
受检异常和非受检异常:都是在程序运行时出现的错误,但是可以从上面两段代码可以看出受检异常和非受检异常的处理方式是不一样的。
三、差异和优势
受检异常:增加代码的健壮性,但是为了对异常进行抛出、捕获和处理异常需要增加较多代码,会降低代码的可读性。
如果异常影响到了系统运行的安全性和正确性的时候,必须对受检异常进行处理,否则这些受检异常是可以装换成非受检异常。