所有异常类型都继承与throwable,一个分支是error,一个分支是exception
其中exception又分为运行时异常和非运行时异常
或者也可以将异常类分为检查异常和非检查异常
Error(错误)表示系统级的异常,是java运行环境中的内部错误或者硬件问题,比如,内存资源不足等,对于这种错误,程序基本无能为力,退出运行或者重新规划程序以避免这类错误。Exception(违例)表示需要捕捉或者需要程序进行处理的异常,它处理的是因为程序设计的瑕疵而引起的问题或者在外的输入等引起的一般性问题,是程序必须处理的。
CheckException和UnCheckException(运行时异常),他们两个的区别是
CheckException的异常不能抛出,必须通过try-catch来完成,必须要用处理,不然无法运行:如SQLException,
UnCheckException异常 ,运行时异常包括平常遇到的各种异常,如空指针异常,数据格式异常等一系列异常,这种异常是可以不捕获的,可通过throws抛出异常,交给别的代码或者JAVA虚拟机来完成。
throw和throws
位置区别:throw用在函数体内,后面跟具体的异常对象, throws用在函数方法上,后面跟一个或者多个异常类
功能区别: throw表示一定抛出了某种特定异常对象,执行到throw后,会跳转会调用者,并且调用者会接收到该异常,throws表示可能抛出异常,并不一定会发生这些异常,调用者只是知道该方法可能出现的问题,可以预先给出处理方法