System.exit trong Java có ý nghĩa gì? khi nào sử dụng

Trong bài viết này, chúng ta sẽ tìm hiểu về System.exit trong Java. Để xem mục đích sử dụng của nó là gì? khi nào cần sử dụng? và mã code truyền vào có ý nghĩa gì nhé.

System.exit là gì?

System.exit() là một void method (không có giá trị giả về) nhận 1 tham số status code kiểu int để thực thi.

Thông thường, các bạn sẽ thấy các ví dụ về System.exit() sẽ truyền status code là 0.

System.exit(0);

Status code có thể là bất cứ số int nào, tuy nhiên đối với các trường hợp status khác 0 được xem là việc dừng chương trình do có vấn đề gì đó xảy ra.

Khi System.exit() được gọi, quá trình thực thi của JVM sẽ bị chấm dứt và dừng chương trình. Như vậy, các mã code được triển khai ở phía sau System.exit() sẽ không được thực thi.

public class Main {

    public static void main(String[] agrs) throws IOException {
        System.out.println("starting");
        System.exit(0);
        System.out.println("This line is unreachable");

    }
}

Output: starting

Note: Tuy nhiên việc sử dụng System.exit() để tắt chương trình không được khuyến khích. Mặc dù thread gọi System.exit() sẽ chờ cho đến khi JVM dừng hẳn, tuy nhiên nếu các shutdown hook chuyển các task cho thread này thực thi chúng sẽ rơi vào trạng thái deadlock.

Tại sao cần sử dụng System.exit

Thông thường chúng ta chỉ sử dụng System.exit() khi gặp các điều kiện khác thường và chúng ta muốn dừng chương trình trong các trường hợp này ngay lập tức.

Hoặc muốn tắt chương trình từ một nơi khác hàm main, System.exit() là 1 cách để đạt được mong muốn.

Sử dụng System.exit như thế nào

Status code trong System.exit() đóng vai trò như lời giải thích lý do dừng chương trình ngay lập tức.

Ví dụ thay vì ném ra một exception để làm dừng chương trình, chúng ta có thể trả về status code để giải thích lý do dừng chương trình.

System.exit sẽ kêu gọi các shutdown hook được đăng ký giải phóng các tài nguyên mà chúng đang chiếm lấy và thoát khởi các thread không phải là non-daemon.

Example

Trong ví dụ này, chúng ta sẽ cố gắng đọc 1 file text, nếu nó tồn tại chúng ta sẽ in dòng đầu tiên của nó ra màn hình, ngược lại sẽ ngừng chương trình bằng cách gọi System.exit().

try {
    BufferedReader br = new BufferedReader(new FileReader("file.txt"));
    System.out.println(br.readLine());
    br.close();
} catch (IOException e) {
    System.exit(2);
} finally {
    System.out.println("Exiting the program");
}

Cách chọn Status code

Như đã đề cập ở trên, chúng ta có thể truyền bất cứ một số nguyên nào thế nhưng, trong thực tế, status code 0 mô tả việc dừng chương trình là bình thường, ngoài ra tất cả các mã khác 0 đều chỉ ra trạng thái bất bình thường.

Để chương trình có thể giao tiếp tốt với các công cụ tiêu chuẩn, chúng ta cần xác định status code theo một quy chuẩn chung. Ví dụ UNIX status code định nghĩa 128 mã chuẩn cho các các trường hợp không hợp lệ.

Tóm lược

Trong bài viết này, chúng ta đã tìm hiểu về cách System.exit() hoạt động cũng như cách sử dụng nó.

Sử dụng exception hay status code để dừng các chương trình ở phía server là một trong những việc làm được khuyến khích.

Nguồn thao khảo 

https://www.baeldung.com/java-system-exit#when

0 0 vote
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x