父类Throwable
两个分支:
error:合理的应用程序不应该出现的严重问题,可以无需声明便抛出,比如内存溢出。
Exception:程序还能够克服和恢复的问题。
其中又分为系统异常和普通异常。
系统异常是软件本身缺陷所导致的问题,也就是软件开发人员考虑不周所导致的问题,软件使用者无法克服和恢复这种问题,但在这种问题下还可以让软件系统继续运行或者让软件死掉,例如,数组脚本越界(ArrayIndexOutOfBoundsException),空指针异常(NullPointerException)、类转换异常(ClassCastException);
普通异常是运行环境的变化或异常所导致的问题,是用户能够克服的问题,例如,网络断线,硬盘空间不够,发生这样的异常后,程序不应该死掉。
Java为系统异常和普通异常提供了不同的解决方案,编译器强制普通异常必须try..catch处理或用throws声明继续抛给上层调用方法处理,所以普通异常也称为checked异常;
而系统异常可以处理也可以不处理,所以,编译器不强制用try..catch处理或用throws声明,所以系统异常也称为unchecked异常,例如RuntimeException
try 代码块中包含可能发生异常的代码,catch中匹配标注的异常,如果真正发生的该种异常,执行catch代码块中的内容,finally代码块是无论是否发生异常都必须执行的。throws关键字一般房子方法上,类似一种声明,就是方法返回值的声明一样,不过没有那么强制一定要抛出异常,但是如果抛出的话必须声明,throw 关键字用来抛出异常
java异常机制的底层研究:
我看得一知半解,感觉还是要会点汇编和C
http://blog.csdn.net/xucan2087/article/details/4846300