由于异常处理有时候会改变程序的正常流程,这会使得某些不管在任何情况下都必须执行的步骤被忽略,从而影响程序的健壮性。
小王开了一家店,在店里上班的正常流程为:打开店门、工作8个小时、关门。异常流程为:小王在工作时突然犯病,因而提前下班
例如:
public void work() {
try {
开门();
工作8个小时();
关门();
} catch(Exception e) {
去医院()
}
}
小王在工作时突然犯病,那么流程会跳转到catch代码块,这意味着关门的操作不会被执行,这样的流程显然是不安全的,必须确保关门的操作在任何情况下都会被执行.
finally代码块能保证特定的操作总是会被执行,它的形式如下:
public void work() {
try {
开门();
工作8个小时();
} catch(Exception e) {
去医院()
} finally {
关门();
}
}
注:即使方法中执行了return语句,finally最后也是会被执行的