一.异常处理
catch ()
{
//这里操作异常
try {
//
} catch () {
//
} finally {
//
二.异常处理的原则
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
}
}
- try{ //...
catch ()
{
//这里操作异常
}
- 使用finally释放资源,Java中GC能够进行垃圾回收,但那是针对对象,Java中的各种io以及数据库资源并不能被自动释放
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
}
}