从继承图中可以看出来Exception
是Throwable
的继承类
Throwable
分为Error
和Exception
OutOfMemoryError
,StackOverFlowError
等RuntimeException
(UnCheckedException 运行时异常)和CheckedException
(受检异常)NullPointerException
,IndexOutOfBroudsException
等,一般由程序的逻辑代码产生,一般不抛出或者显示的声明这种异常,而是尽力去减少这种异常的产生,可以避免.SQLException
,IOException
,ClassNotFoundException
Exception
是程序本身可以处理的异常
Error
(致命)是程序无法处理,表示出现了不可控的错误,有Java的虚拟机产生和抛出,不可控,在编译的时候检查不到Error的存在
finally是在return语句后执行的,是为了做后续工作,例如释放连接,关闭流,因为finally代码块无论如何都要执行,所以不要在finally中使用return语句
catch的时候从上往下异常类逐渐变大,从子类异常到父类异常,如果有匹配的catch,它就会忽略掉这个catch后面所有的catch.
抛出一个异常,动词
throw new Exception()
表示抛出一个异常
声明一个方法可能抛出的异常,是一种示意
public void f() throws oneException
表示在调用f这个方法的时候可能会抛出异常,由调用该方法的程序处理这个异常