Java基础之异常

java异常的体系结构
Java基础之异常
java异常的分类
首先是继承自Object的Throwable异常的父类。
最重要的两个子类是Error和Excrption
Error:错误,程序不能处理的错误。比如说VirtualMachineError虚拟机运行错误,ThreadDeath线程死亡,导致无法启动程序,这类错误对于程序来说是非常严重的,如果以法律来类比的话,Throwable是宪法,Error就是刑法。
Excrption:异常,异常会比Error严重程度轻一些,像是治安处罚法,一般来说异常出现是可以通过修改代码或者程序本身处理。
异常的分类:检查异常(非运行时异常)和非检查异常指的是RuntimeExcrption下的子类(又称运行时异常)和Error
检查异常和非检查异常的区别:
非检查异常可以通过捕获异常和抛出异常的方式处理,程序可以正常运行
而检查异常是指编译期必须处理的异常,必须解决才能继续运行程序

java异常处理机制
五大关键字
throws 声明抛出异常,在遇到当前方法不知道如何处理该异常是,应该有上一级调用者处理,改异常交给JVM处理。throws关键字一般跟在方法名后面使用。
throw 抛出异常,程序执行时会自动抛出异常,java提供了自行抛出异常的机制,使用throw跟在方法内部抛出异常
try…catch 捕获异常,其逻辑跟if语句相似,不知道那里可能会出现异常时,用业务逻辑代码放入try语句,将异常处理逻辑放入catch语句,这是java异常处理的语法结构。当try语句块中的业务逻辑代码出现异常时,java会产生一个异常对象交给java运行环境中(用throw抛出),java运行环境收到该对象,会寻找能够处理这个异常对象的catch语句块,如果找到交给catch语句执行,如果没有找到,Java环境终止,java程序随之退出。catch语句可以叠加多次使用。
finally 与try …catch连用,不管try语句和catch语句执不执行,finally语句都会执行,可以用其进行资源回收