Cách tốt nhất để thoát khỏi ứng dụng Java bằng mã là gì?
Cách tốt nhất để thoát khỏi ứng dụng Java bằng mã là gì?
Câu trả lời:
Bạn có thể sử dụng System.exit()cho mục đích này.
Theo tài liệu Java 8 của oracle:
public static void exit(int status)Chấm dứt Máy ảo Java hiện đang chạy. Đối số phục vụ như một mã trạng thái; theo quy ước, một mã trạng thái khác không cho thấy sự chấm dứt bất thường .
Phương thức này gọi phương thức thoát trong lớp Runtime. Phương pháp này không bao giờ trở lại bình thường.
Cuộc gọi
System.exit(n)có hiệu quả tương đương với cuộc gọi:
Runtime.getRuntime().exit(n)
System.exit(0);
"0" cho phép bất cứ ai gọi chương trình của bạn biết rằng mọi thứ đều ổn. Tuy nhiên, nếu bạn thoát do lỗi, bạn nên System.exit(1);hoặc với một số khác không tương ứng với lỗi cụ thể.
Ngoài ra, như những người khác đã đề cập, làm sạch đầu tiên! Điều đó liên quan đến việc đóng các tập tin và các tài nguyên mở khác.
System.exit(1)(hoặc bất kỳ số nào khác) là nếu bạn muốn chỉ ra rằng nó bị đóng do lỗi. System.exit(0)chỉ ra rằng chương trình đóng bình thường. Bạn cũng có thể thay đổi 1 thành bất kỳ số nào bạn thích, sau đó khi bạn đang chạy ứng dụng của mình từ một tập lệnh, bạn có thể xác định xem có lỗi hay không.
System.exit() thường không phải là cách tốt nhất, nhưng nó phụ thuộc vào ứng dụng của bạn.
Cách thông thường để kết thúc một ứng dụng là thoát khỏi main()phương thức. Điều này không hoạt động khi có các luồng không phải deamon khác đang chạy, như thường thấy đối với các ứng dụng có giao diện người dùng đồ họa (AWT, Swing, v.v.). Đối với các ứng dụng này, bạn có thể tìm cách kết thúc vòng lặp sự kiện GUI (không biết điều đó có thể xảy ra với AWT hoặc Swing) hay gọi System.exit().
Tôi đồng ý với Jon, ứng dụng của bạn phản ứng với điều gì đó và gọi System.exit ().
Hãy chắc chắn rằng:
Câu trả lời là System.exit (), nhưng không phải là một điều tốt để làm vì điều này hủy bỏ chương trình. Bất kỳ việc dọn dẹp, phá hủy mà bạn dự định sẽ không xảy ra.
Có hai câu trả lời đơn giản cho câu hỏi.
Đây là "Cách chuyên nghiệp":
//This just terminates the program.
System.exit(0);
Đây là một cách vụng về hơn:
//This just terminates the program, just like System.exit(0).
return;
System.exit(0); return;cũng tốt, việc trả về ngăn không cho bất kỳ mã ruther nào được chạy trước khi Hệ thống có thể thoát, nếu không bạn cần một cờ (..i.e. if (!called_exit) { further code after exit statement }
Runtime.getCurrentRumtime().halt(0);
halt: "Phương pháp này nên được sử dụng hết sức thận trọng. Không giống như exitphương pháp này, phương pháp này không gây ra các móc tắt máy được khởi động và không chạy các công cụ hoàn thiện không được kích hoạt nếu đã hoàn tất việc thoát lệnh. đã được bắt đầu rồi, phương pháp này không chờ đợi bất kỳ móc tắt hoặc bộ hoàn thiện đang chạy nào hoàn thành công việc của họ. " Nói tóm lại, bạn không cần sử dụng halt, bạn nên chọn exit.
System.exit()sẽ làm những gì bạn muốn. Nhưng trong hầu hết các tình huống, bạn có thể muốn thoát một luồng và để lại luồng chính. Bằng cách đó, bạn có thể chấm dứt một tác vụ, nhưng cũng giữ khả năng bắt đầu một tác vụ khác mà không cần khởi động lại ứng dụng.
Điều này nên làm theo cách chính xác:
mainFrame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
mainFrame.addWindowListener(new WindowListener() {
@Override
public void windowClosing(WindowEvent e) {
if (doQuestion("Really want to exit?")) {
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainFrame.dispose();
}
}