Bất cứ khi nào chương trình Perl, Python, C ++ hoặc Tcl tạm dừng với một ngoại lệ chưa được xử lý, các thời gian chạy ngôn ngữ đó sẽ cẩn thận để đăng ký mã thoát khác không cho quy trình. Ngay cả các chương trình dựa trên Eclipse cũng trả về 1 nếu chúng bị lỗi trong khi khởi động. java.exe
Tuy nhiên, các chương trình được chạy theo tiêu chuẩn , vui vẻ trả về 0 cho dù chúng kết thúc đột ngột như thế nào, trừ khi chương trình gọi System.exit()
với giá trị thoát. Thậm chí AssertionFailedError
hoặc UnsatisfiedLinkError
được báo cáo lại cho chương trình gọi là lối thoát thành công.
Tất nhiên không phải tất cả các hệ thống đều có mã trả về chương trình, nhưng Unix và Windows đủ quan trọng để đảm bảo java.lang.Process.exitValue()
cho các quy trình con; Họ cũng không đảm bảo tôn trọng các quy ước cho các quy trình cha mẹ?
Đây có phải là một lỗ hổng trong thiết kế ngôn ngữ hay chỉ trong quá trình thực hiện? Có một lập luận rằng đó là một ý tưởng tốt?