VietTuts

Tự Học Lập Trình Online

  • Home
  • Java
  • Servlet
  • JSP
  • Struts2
  • Hibernate
  • Spring
  • MyBatis
  • Java WS
  • C
  • C++
  • C#
  • Python
  • PHP
  • Excel
  • VBA
  • Web
    • JavaScript
    • JQUERY
    • JSON
    • AJAX
    • CSS
    • HTML
    • HTML5
    • Node.js
    • Angular 7
  • SQL
    • MySQL
    • SQL Server
  • Misc
    • Eclipse
    • Phần mềm tiện ích
    • Cấu trúc DL&GT
    • Selenium Test
Java Cơ Bản Các Khái Niệm Java OOPs Java String

Các Tính Năng Mới Trong Java

Giới thiệu về các tính năng mới trong java

Java 8

Biểu thức Lambda Ví dụ biểu thức Lambda với forEach() Ví dụ biểu thức Lambda với Thread Ví dụ biểu thức Lambda với Comparator Ví dụ biểu thức Lambda với Filter Collection Data Toán tử dấu 2 chấm (::) StringJoiner forEach Base64 Encode và Decode Stream trong java 8

Java 7

Binary Literal String trong mệnh đề Switch Catch nhiều ngoại lệ Lệnh try-with-resources Suy luận tạo đối tượng Generic Chữ số Java với dấu gạch dưới Các cải tiến JDBC của Java 7

Java 4/5

Varargs trong Java Enum trong java For-Each trong java Static Import trong java Autoboxing và Unboxing trong java Annotation trong java Tùy chỉnh Annotation trong java Generics trong java
Xử Lý Ngoại Lệ Các Lớp Lồng Nhau Đa Luồng (Multithreading) Java AWT Java Swing Java I/O Ví Dụ Java I/O Lập Trình Mạng Với Java Java Date Chuyển Đối Kiểu Dữ Liệu Java Collections Java JDBC Bài Tập Java Có Lời Giải Câu Hỏi Phỏng Vấn Java
1 / 3
❮ ❯

Lệnh try-with-resources trong Java 7


Catch nhiều ngoại lệ trong Java 7
Suy luận tạo đối tượng Generic

Câu lệnh try-with-resources trong Java 7 là một câu lệnh try khai báo một hoặc nhiều tài nguyên. Tài nguyên là một đối tượng phải được đóng sau khi hoàn thành chương trình. Câu lệnh try-with-resources đảm bảo rằng mỗi tài nguyên được đóng sau khi thực thi câu lệnh.

Bạn có thể truyền bất kỳ đối tượng nào được implements java.lang.AutoCloseable, bao gồm tất cả các đối được implements java.io.Closeable.


Nội dung chính

  • Ví dụ 1 - try-with-resources
  • Ví dụ 2 - try-with-resources - sử dụng nhiều resources
  • Ví dụ 2 - try-with-resources - sử dụng khối lệnh finally
  • Các ngoại lệ bị loại bỏ

Ví dụ 1 - try-with-resources

Ví dụ sau ghi một chuỗi vào một file. Nó sử dụng một thể hiện của đối tượng FileOutputStream để ghi dữ liệu vào file. FileOutputStream là một tài nguyên phải được đóng lại sau khi chương trình kết thúc. Vì vậy, trong ví dụ này, việc đóng tài nguyên được thực hiện bằng chính nó.

package vn.viettuts;

import java.io.FileOutputStream;

public class TryWithResources1 {
    public static void main(String args[]) {
        // su dung try-with-resources
        try (FileOutputStream fos = new FileOutputStream("/message1.txt")) {
            String msg = "Welcome to VietTuts.Vn!";
            // converting string thanh mang byte
            byte byteArray[] = msg.getBytes();
            fos.write(byteArray);
            System.out.println("Thong diep da duoc ghi vao file thanh cong!");
        } catch (Exception exception) {
            System.out.println(exception);
        }
    }
}

Kết quả:

Thong diep da duoc ghi vao file thanh cong!

Ví dụ 2 - try-with-resources - sử dụng nhiều resources

package vn.viettuts;

import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;

public class TryWithResources2 {
    public static void main(String[] args) {
        // su dung try-with-resources
        // su dung nhieu resources
        try (FileOutputStream fos = new FileOutputStream("/message2.txt");
                InputStream is = new FileInputStream("/message2.txt")) {
            // ghi data vao file
            String msg = "Welcome to VietTuts.Vn!";
            byte byteArray[] = msg.getBytes();
            fos.write(byteArray);
            System.out.println("-------Data da duoc ghi vao file---------");
            System.out.println(msg);
            // doc data tu file da ghi
            DataInputStream inst = new DataInputStream(is);
            int data = is.available();
            byte[] byteArray2 = new byte[data]; //
            inst.read(byteArray2);
            String str = new String(byteArray2);
            System.out.println("-------Data read from file---------");
            System.out.println(str);
        } catch (Exception exception) {
            System.out.println(exception);
        }
    }
}

Kết quả:

-------Data da duoc ghi vao file---------
Welcome to VietTuts.Vn!
-------Data read from file---------
Welcome to VietTuts.Vn!

Bạn có thể sử dụng khối catch với câu lệnh try-with-resources giống như một câu lệnh try thông thường.


Ví dụ 2 - try-with-resources - sử dụng khối lệnh finally

package vn.viettuts;

import java.io.FileOutputStream;

public class TryWithResources3 {
    public static void main(String args[]) {
        try (FileOutputStream fos = new FileOutputStream("/message3.txt")) {
            // ghi data vao file
            String msg = "Welcome to VietTuts.Vn!";
            byte byteArray[] = msg.getBytes();
            fos.write(byteArray);
            System.out.println("Data duoc ghi vao file thanh cong!");
        } catch (Exception exception) {
            System.out.println(exception);
        } finally {
            System.out.println("Khoi lenh finally duoc thuc thi "
                    + "sau khi dong resources.");
        }
    }
}

Kết quả:

Data duoc ghi vao file thanh cong!
Khoi lenh finally duoc thuc thi sau khi dong resources.

Các ngoại lệ bị loại bỏ

Nếu một khối try ném một ngoại lệ và một hoặc nhiều ngoại lệ được ném bởi try-with-resources, các ngoại lệ được ném bởi try-with-resources sẽ bị loại bỏ. Nói cách khác, chúng ta có thể nói, các ngoại lệ được ném bởi try-with-resources là các ngoại lệ bị loại bỏ.

Bạn có thể nhận được những ngoại lệ này bằng cách sử dụng phương thức getSuppress() của lớp Throwable.

Java đã thêm một hàm tạo mới và hai phương thức mới trong lớp Throwable để xử lý các ngoại lệ bị loại bỏ.

Constructor Mô tả
protected Throwable (String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) Nó xây dựng một đối tượng Throwable mới với các thông báo chi tiết được chỉ định, nguyên nhân, kích hoạt hoặc vô hiệu hóa, và có thể ghi stacktrace được kích hoạt hoặc vô hiệu hóa.
Phương thức Mô tả
public final void addSuppressed (Throwable exception) Nó gắn thêm ngoại lệ được chỉ định cho các trường hợp ngoại lệ bị chặn để phân phối ngoại lệ này. Phương thức này là luồng an toàn và thường được gọi là (tự động và ngầm) bởi câu lệnh try-with-resources. Nó ném các ngoại lệ sau đây: IllegalArgumentException: nếu ngoại lệ có thể ném được, một phép ném không thể ngăn chặn chính nó. NullPointerException: nếu ngoại lệ là null.
public final Throwable[] getSuppressed() Nó trả về một mảng chứa tất cả các ngoại lệ đã bị chặn bởi câu lệnh try-with-resources. Nếu không có ngoại lệ nào bị chặn hoặc loại bỏ bị vô hiệu hóa, một mảng trống sẽ được trả về.

Catch nhiều ngoại lệ trong Java 7
Suy luận tạo đối tượng Generic

Recent Updates

Xuất dữ liệu ra màn hình console trong JavaCài đặt môi trường JavaJava Swing - Bài tập quản lý sinh viên trong javaLinkedList trong javaArrayList trong javaBài tập java có lời giảiSử dụng Javascript trong HTMLToán tử dấu 2 chấm (::) trong Java 8Lambda Expression - Biểu thức Lambda trong java 8Bài tập Java - Sắp xếp nhanh (Quick Sort) trong JavaBài tập Java - Sắp xếp chèn (Insertion Sort) trong JavaBài tập Java - Sắp xếp nổi bọt (Bubble Sort) trong JavaSắp Tết 2026 Rồi! - Còn bao nhiêu ngày nữa là đến tết 2026?

VietTuts on facebook

Học Lập Trình Online Miễn Phí - VietTuts.Vn
Danh Sách Bài Học

Học Java | Hibernate | Spring
Học Excel | Excel VBA
Học Servlet | JSP | Struts2
Học C | C++ | C#
Học Python
Học SQL

Bài Tập Có Lời Giải

Bài tập Java
Bài tập C
Bài tập C++
Bài tập C#
Bài tập Python
Ví dụ Excel VBA

Câu Hỏi Phỏng Vấn

201 câu hỏi phỏng vấn java
25 câu hỏi phỏng vấn servlet
75 câu hỏi phỏng vấn jsp
52 câu hỏi phỏng vấn Hibernate
70 câu hỏi phỏng vấn Spring
57 câu hỏi phỏng vấn SQL

Scroll back to top

Copyright © 2016 VietTuts.Vn all rights reserved. | Liên hệ | Chính sách - riêng tư | sitemap.html | sitemap_index.xml