JAVA异常处理

1. 关闭物理资源
物理资源指的是哪些数据库连接、网络连接、磁盘文件的读取等,对于java垃圾回收机制,它只能回收那些属于java内存管理的部分,而对于物理资源则回收不了,所以如果不关闭物理资源则容易导致内存溢出。

2. 正确关闭方法
A. 使用finally块来关闭物理资源,这样保证关闭操作总会执行
B. 关闭每个物理资源之前要保证该物理资源不为null
C. 为每个物理资源单独使用try。。。catch块关闭,保证关闭资源时如果引发异常不会影响其他资源的关闭
try{
oos = new ObjectOutputStream(new FileOutputStream(“a.bin”));

}catch(…){

}finally{
If(oos !=null){
    try{
oos.close();
    }
    Catch(Exception e){
    e.printStackTrace();
}
}
}

3. 没有调用finally的情况
不论try块是否正常结束还是中途非正常的退出。Finally块总能被执行,但是如果try块根本就没有结束其执行过程,即在try中添加System.exit(0)那么将停止当前线程和所有其他当场死亡的线程,导致finally块不能执行。这种情况下需要为系统注册关闭钩子:
Runtime.getRunTime().addShutdownHook{
New Thread()
{
Public void run(){

If(oos!=null){
Try{
Oos.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
}
}
System.exit(0);

4. 当finally中含有return语句的时候
Public static int test(){
Int count = 5;
Try{
Throw new RuntimeException(“测试异常”);
}finally{
Return count;
}
}
当程序执行到try语句块中的时候发现遇到异常,则进入finally中,而finally里通过return已经结束了方法执行,所以程序不会再跳回到try语句块里,即“测试异常”是不会被打印出来的

你可能感兴趣的:(java异常处理)