Như người khác đã nêu, bạn cần sử dụng System.exit()
để có được kết quả mong muốn. Lý do đằng sau điều này là System.exit()
trực tiếp tạm dừng các chương trình và thoát trở về giá trị như được xác định.
Nếu bạn đang tự hỏi tại sao chúng ta không thể quay trở lại bất cứ điều gì từ phương pháp main
, câu trả lời là - trong java main
phương pháp không bao giờ trả về bất cứ điều gì, nếu bạn phân tích báo cáo kết quả theo yêu cầu vàng
public static void main()
bạn sẽ thấy, trong java main có kiểu trả về là void
. Vì vậy, nếu bạn đang kiểm tra trạng thái trả về của một chương trình java từ chương trình gọi (Shell trong trường hợp này), bạn đang cố gắng đọc trạng thái thoát của jvm
chứ không phải chương trình java của bạn sẽ ở trạng thái bình thường điều kiện luôn luôn bằng không (0) thậm chí khó khăn nếu chương trình của bạn bị rơi do bất kỳ ngoại lệ nào. Bạn sẽ chỉ nhận được trạng thái thoát khác 0 nếu jvm gặp sự cố do các lý do không mong muốn như OutOfMemory
hoặc điều gì đó tương tự quan trọng.
Hy vọng điều này sẽ giúp bạn hiểu rõ về trạng thái bắt thoát của chương trình java.
Có cách nào khác để nắm bắt trạng thái kể từ trong java System.exit() không phải là cách thông thường để thoát. – vino
bạn có thể bắt trạng thái bằng cách sử dụng echo $ ?, ngay cả khi chương trình java không thoát với System.exit(), theo mặc định nó trả về trạng thái 0 (có nghĩa là Thành công) cho Hệ điều hành khi thoát khỏi chương trình bình thường. – Stauz