Khối lệnh finally trong java được sử dụng để thực thi các lệnh quan trọng như đóng kết nối, đóng cá stream,...
Khối lệnh finally trong java luôn được thực thi cho dù có ngoại lệ xảy ra hay không hoặc gặp lệnh return trong khối try.
Khối lệnh finally trong java được khai báo sau khối lệnh try hoặc sau khối lệnh catch.
Nội dung chính
Tại sao phải sử dụng khối finally
Khối finally có thể được sử dụng để chèn lệnh "cleanup" vào chương trình như việc đóng file, đóng các kết nối,...
Cách sử dụng khối finally trong java
Dưới đây là các trường hợp khác nhau về việc sử dụng khối finally trong java.
TH1
sử dụng khối lệnh finally nơi ngoại lệ không xảy ra.
public class TestFinallyBlock { public static void main(String args[]) { try { int data = 25 / 5; System.out.println(data); } catch (NullPointerException e) { System.out.println(e); } finally { System.out.println("finally block is always executed"); } System.out.println("rest of the code..."); } }
Output:
5 finally block is always executed rest of the code...
TH2
sử dụng khối lệnh finally nơi ngoại lệ xảy ra nhưng không xử lý.
public class TestFinallyBlock1 { public static void main(String args[]) { try { int data = 25 / 0; System.out.println(data); } catch (NullPointerException e) { System.out.println(e); } finally { System.out.println("finally block is always executed"); } System.out.println("rest of the code..."); } }
Output:
finally block is always executed Exception in thread "main" java.lang.ArithmeticException: / by zero
TH3
sử dụng khối lệnh finally nơi ngoại lệ xảy ra và được xử lý.
public class TestFinallyBlock2 { public static void main(String args[]) { try { int data = 25 / 0; System.out.println(data); } catch (ArithmeticException e) { System.out.println(e); } finally { System.out.println("finally block is always executed"); } System.out.println("rest of the code..."); } }
Output:
java.lang.ArithmeticException: / by zero finally block is always executed rest of the code...
TH4
Sử dụng khối lệnh finally trong trường hợp trong khối try có lệnh return.
public class TestFinallyBlock3 { public static void main(String args[]) { try { int data = 25; if (data % 2 != 0) { System.out.println(data + " is odd number"); return; } } catch (ArithmeticException e) { System.out.println(e); } finally { System.out.println("finally block is always executed"); } System.out.println("rest of the code..."); } }
Output:
25 is odd number finally block is always executed