一、异常的处理过程
异常类的似复刻变量被throw时,会立即中止当前所在的这层方法,即当层方法里throw异常类似复刻变量之后的语句就不会执行了,如果throw异常语句在当层方法中被try{}包裹,则中止就先发生被包裹在了try{}层,待给后续的catch选择语句去匹配(用异常类变量引用去接对应的异常似复刻变量可有向上转型的)去捕捉进去,中止被捕捉进就不会再发生中止且执行完相应的catch语句后就被毁了,之后再执行try-catch-finally连着执行捕捉体的finally语句,最后再执行此方法里捕捉体系执行完后剩余的语句,如果后续的catch选择语句都未有与此异常相匹配捕捉的,捕捉体系捕捉不到解决不到此异常,接着的捕捉体系的finally部分执行完之后,捕捉体系结束包裹结束,异常还在的接着中止该方法并向外继续抛出抛到再上一层调用此方法即相当于成了该方法的返回值的方法里处,继续看有没有被包裹还是继续抛,如果到了main方法这层时这层也未能将此异常处理销毁,就会抛到JVM给JVM去解决销毁,程序此时就是异常终止了自己没能解决掉这个异常
二、受检查异常
受检查异常的抛出都是需要经过方法声明throws的检查下才可进行抛出的(非受检查异常没有这一抛出检查要求是直接原类型抛出的且此抛出检查要求对非受检查异常也是无效的),throws检查下指定抛出后的异常的类型必须是原来的类型或原来异常父类的类型,在此检查指定下受检查异常抛出时可以发生向上转型,受检查异常需要显式地写完其最后能被销毁的全过程
三、异常类的关系
- 所有异常类都有继承了Exception父类
- RuntimeException是一个非受检查异常类,其它的所有非受检查异常类的非受检查性质就是来源于继承它