异常概念:阻止当前方法或作用域继续执行的,称之为异常。
异常类Throwable,有两个子类Error类和Exception类
Error类是指系统错误,是很严重的异常,会导致程序无法处理,从而终结;
Error类包括两类:虚拟机错误和线程死锁;
Exception类为编译、环境、用户操作输入出现问题;
Exception异常类主要包括“非检查异常”和“检查异常”
非检查异常RuntimeException(运行时异常),由JVM自动抛出,并自动捕获;该异常的出现一般说明了程序的代码出现了问题,应该从逻辑上改进代码;
检查异常(CheckException):除RuntimeException异常以外的异常,需要手动地添加捕获以及处理语句;
处理异常
当try语句块中的代码确实发生异常,则会导致程序的终止执行;程序的控制权将被移交给catch块中的异常处理程序;
catch块中的代码可以是发出一些警告来提示用户或者编程人员去检查一下配置或者网络连接的问题;也可以在该语句块中进行错误日志的记录等操作;
当try语句块中有很多种类型的异常,可以在try语句块后面用多个catch语句块来捕获多种类型的异常,并进行相应的处理;
对于多重catch语句块的顺序问题:先小后大,先子类后父类;因为存在就近匹配原则,而子类继承于父类,针对于父类的异常处理程序,对于子类也是适用的;
异常捕获处理完成之后的finally语句
finally语句块中通常是一些最终将要执行的代码,包括“关闭连接”、“关闭打开的程序”等操作;
Java异常的抛出
throw位于方法体内部,表明具体的抛出异常的动作
Java中的所有异常类
Java中还可以自定义异常
继承的异常类型为该自定义异常的意思相近的异常类(Exception类的子类)或者异常基类Exception
Java异常链
可以将捕获的异常包装成一个新的异常,在新的异常里添加对原始异常的引用,再把这个新异常抛出,从而像一个链式反应一样,一个导致另一个,即异常链。