Java异常处理

本文介绍了Java中异常处理的基本用法及原则,包括try-catch-finally语句的应用,强调了资源释放的重要性,并讨论了如何避免在异常处理中泄露敏感信息。
一.异常处理
  • try{    //...
}
catch ()
{
    //这里操作异常

}


  • 使用finally释放资源,Java中GC能够进行垃圾回收,但那是针对对象,Java中的各种io以及数据库资源并不能被自动释放
,finally在return语句执行并记录状态后执行,执行完才会return出去,所以finally处理相对友好
try {
       //
    } catch () {
       //
    } finally {
       //

              }


  • Java 7的Try-With-Resource语句,这里不涉及

二.异常处理的原则
  • 不要忽略已检查异常:异常的定义是,catch后面的语句在正常情况下不能被执行,但是总会有出现异常的时候,这时简单的处理是记录日志,更好的做法是通知用户出现异常,以及相应的操作

  • 不要在异常中泄露敏感信息,我曾经看到过这样真实的生产中的代码,在维护别人采集数据的业务代码中,将整个采集数据都输出到日志文件,这导致我在定位bug时需要查找几G大小的日志文件,
所以,异常记录也是如此,敏感的数据不要打印出来;

  • 发生异常时要恢复到之前的对象状态:就好比数据库的回滚,在出现异常时对各个对象状态进行回滚也是很有必要的,
举个例子:
public int getVolumePackage(int weight)
{
    length += PADDING;
    width += PADDING;
    height += PADDING;
    try
    {
        int volume = length * width * height;
        return volume;
    }
    catch (Exception t)
    {
        return -1; // Non-positive error code
    }
    finally
    {
        length -= PADDING;
        width -= PADDING;
        height -= PADDING; // Revert
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值