在 Java 异常语法 里面我们了解了 finally 关键字,它需要和 try…catch 或者 try 一起使用。无论 try 中或者 catch 里面什么样的情况,fianlly 里面的语句都会执行。
try{
//do something
}catch(Exception e){
// catch 代码块可以加可以不加
}finally{
//do something
}
finally 是必须和 try 一起的,catch 代码块可以有也可以没有。无论 try 或者 catch 里面执行什么样子,finally 都会执行。
package com.haicoder.net.except;
public class ExceptionTest {
public static void main(String[] args) {
System.out.println("嗨客网(www.haicoder.net)\n");
System.out.println("程序开始");
try {
int i = 2;
int j = 0;
int m = i / j;
} finally {
System.out.println("");
System.out.println("我是 finally 语句");
}
System.out.println("程序结束");
}
}
运行结果如下
在 try 后面直接加了 finally。虽然 try 执行错了,抛出了异常,但是 finally 里面的代码块还是执行了。由于只有 try,没有将异常信息 catch 住,所以 finally 后面的逻辑语句没有继续执行了。
package com.haicoder.net.except;
public class ExceptionTest {
public static void main(String[] args) {
System.out.println("嗨客网(www.haicoder.net)\n");
System.out.println("程序开始");
try {
int i = 2;
int j = 0;
int m = i / j;
} catch (Exception e) {
System.out.println("异常信息:" + e.getMessage());
System.out.println("==================");
e.printStackTrace();
}finally {
System.out.println("");
System.out.println("我是 finally 语句");
}
System.out.println("程序结束");
}
}
运行结果如下
catch 将异常信息捕获住了,所以代码的逻辑都执行了,finally 里面的代码逻辑也执行了。
在 try 语句块后面,无论 try 里面有没有异常,finally 里面的代码块都会执行。