java异常的超累是throwable,子类是exception,一般用的异常处理都是用exception。
用法:一般的异常是处理的越早好,因为异常的处理是向后推的,就是说如果在方法初期没找到处理异常块
的话,就会去找方法调用者。
exception异常分为两种:一种是runtimeexception运行时异常,编译器不去检查,也就是说当程序中可能
出现异常时即使没有try..catch,程序还是会编译通过只是在运行的时候会报错,但是程序自己会抛出异常,
这类异常的处理方法是:在编写程序的时候尽量避免这种异常,比如1除于0编译器是不会认为这个是错的
但是运行的时候会报错,所以在写程序的时候你得自己避免,如果程序出现了运行时异常建议程序终止,
否则无法恢复。
另外一种是:受检查异常,除了runtimeexception及其子类外剩下的全是受检查异常,这类异常要么用
try..catch捕获,要么用throws抛出,程序自身是可以处理的,。如果抛出异常的方法本身不处理或者不能处理它
,那就让程序的调用者去处理否则会出错。
还有一种就是运行时错误:
Error类及其子类表示运行时错误,通常是由Java虚拟机抛出的,JDK中与定义了一些错误类,比如VirtualMachineError
和OutOfMemoryError,程序本身无法修复这些错误.一般不去扩展Error类来创建用户自定义的错误类。
而RuntimeException类表示程序代码中的错误,是可扩展的,用户可以创建特定运行时异常类。
最佳处理方案:
1对于运行时异常,我们不要用try...catch来捕获处理,而是在程序开发调试阶段,
尽量去避免这种异常,一旦发现该异常,正确的做法就会改进程序设计的代码和实现方式,
修改程序中的错误,从而避免这种异常。捕获并处理运行时异常是好的解决办法,
因为可以通过改进代码实现来避免该种异常的发生。
2对于受检查异常,没说的,老老实实去按照异常处理的方法去处理,
要么用try...catch捕获并解决,要么用throws抛出!
3对于Error(运行时错误),不需要在程序中做任何处理,出现问题后,
应该在程序在外的地方找问题,然后解决。