java异常处理机制

java异常类

java.lang.Throwable

方法:

getMessage(); 获得异常描述

printStackTrance(); 打印异常堆栈

两个子类:

Error:仅靠程序本身无法恢复的严重错误,比如内存不足,java虚拟机的方法调用堆栈溢出。

大多数情况下,遇到这样的错误时,程序只有死的份。

StackOverError,OutOfMemoryError

Exception:表示程序可以处理的异常。程序出现异常的时候,应该尽可能地处理异常,并且

使得程序恢复运行,而不应该随意中止。

EOFException,FileNotFoundException

 

RuntimeException异常及其子类:运行时异常

java编译器不会检查它,这种异常没有try catch语句捕获,也没有throw字句抛出,还是编译通过。

unchecked Exception

运行时异常表示无法让程序恢复运行的异常,导致这种异常的原因通常是由于执行了错误操作。一旦出现错误操作,建议

终止程序,因此java编译器不检查这种异常。

运行时异常应该尽量避免,在程序调试阶段,遇到这种异常的时候,正确的做法是改进程序的设计和实现方式,修改程序

中的错误,从而避免这种错误。

如果捕获并且使程序恢复运行不是明智的行为:

1.这种异常一旦发生,损失严重。

2.即使程序恢复运行,也可能会导致程序的业务逻辑错乱,甚至导致更严重的异常,或者得到错误的运行结果。

 

受检异常,除了RuntimeException及其子类的所有Exception及其子类。

Checked Exception

这种异常要么用try..catch捕获,要么用throw子句声明抛出,否则编译不会通过。

可以处理和修复的异常,如果抛出异常的方法本身不能处理它,那么方法调用者应该去处理,如此递推,知道在某一层可以处理它,

就进行必要的处理,而不至于终止程序。

 

 

Error和java运行时异常:

相同:java编译器都不会检查他们,当程序出现错误的时候,都死。

不同:Error及其子类是由java虚拟机抛出,一般不可拓展。

RuntimeException表示程序代码中的错误,可以自定义。

 

 

异常转义和异常链

 

 

 

异常处理原则

1.异常只能用于非正常情况

2.为异常提供文档说明

3.尽可能地避免异常

**许多运行时异常是由于代码中的错误引起的,修改代码,改进实现方式

**提供状态测试方法,某种状态下,不适合这种操作,引起异常。

4.保持异常的原则性

**检查方法的参数是否有效,确保异常发生的时候还没有改变初始状态

**恢复代码

**在对象的临时对象上进行操作,当操作成功后,把拷贝的内容复制到原来的对象上

5.避免过于庞大的try代码块

**分段处理

6.在catch子句中指定具体的异常

try{

 //code

}catch(Exception e){//code}

**俗话说对症下药,对不同的异常通常有不同的处理方式。以上代码意味着对所有异常采用相同的方式,这往往是不现实的。

**会捕获本来应该抛出的运行时异常,掩盖程序中的错误。

7.不要在catch代码块中忽略被捕获的异常

**处理异常:针对异常采取一些行动,比如弥补造成的损失或者给出警告。

**重新抛出异常:如果当前时间或者环境下还不能处理该异常,就应该重新抛出。

**进行异常转译:把原始异常包装成适合当前抽象层的另一种异常,再将其抛出。

**假如在catch代码块中不能采取任何措施,那么就不要捕获异常,而是用throws子句声明抛出异常。

java异常处理机制,布布扣,bubuko.com

java异常处理机制

上一篇:JAVA中关于set()和get()方法的理解及使用


下一篇:C语言中的转义字符