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语句块里,即“测试异常”是不会被打印出来的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值