2015-08-13 14 views
6

Nói rằng tôi có đoạn mã sau:Tôi có nên sử dụng System.exit (1) khi bắt ngoại lệ dừng ứng dụng không?

try { 
    //Do something with File 
} catch (FileNotFoundException e) { 
    outputInfo("Error in IO Redirection", true); 
    e.printStackTrace(); 
    System.exit(1); 
} 

chương trình của tôi thoát ra ngay sau khi vị trí đánh bắt này, là một chủ đề duy nhất chương trình (một phương pháp chính) và không nên mong đợi để phục hồi từ một ngoại lệ như vậy.

Tôi có nên thực sự đang sử dụng System.exit(1);?

+0

Sử dụng số nguyên 1-127 trong hệ thống.exit cho biết chấm dứt bất thường của chương trình. Nếu bạn không muốn thực hiện bất kỳ thao tác nào khác sau khi bắt khối, bạn có thể sử dụng nó hoặc bắt ngoại lệ và in bằng thông báo lỗi thích hợp. – Shriram

+0

Thay thế nào bạn đang cân nhắc thay cho 'System.exit (1);'? – jaco0646

+0

Không thay thế, tôi chỉ tự hỏi điều gì là cần thiết để suy nghĩ về khi tôi đang sử dụng 'System.exit (1);' và những gì tôi nên hiểu có thể đi sai trong việc sử dụng điều này trong tất cả các bắt xử lý ngoại lệ của tôi. – insidesin

Trả lời

4

Nếu bạn mong đợi một người nào khác để chạy chương trình của bạn, và họ dựa vào các mã trạng thái quá trình để biết nếu chương trình của bạn đã thành công hay thất bại, sau đó bạn nên sử dụng System.exit(1);

http://docs.oracle.com/javase/7/docs/api/java/lang/System.html#exit%28int%29

Kết thúc hiện đang chạy Java Virtual Machine. Đối số đóng vai trò là mã trạng thái; theo quy ước, mã trạng thái không đồng bộ cho biết chấm dứt bất thường.

+0

Điều gì sẽ xảy ra nếu chương trình của bạn sử dụng mệnh đề cuối cùng. 'System.exit (1)' chắc chắn sẽ can thiệp, điều đó có nghĩa là bạn có thể phải sao chép xong mã trước khi gọi lệnh thoát không? – insidesin

+0

Bạn có thể đặt câu lệnh 'thoát' ra khỏi khối' catch' hoặc tạo [hook tắt máy] (http://stackoverflow.com/questions/2921945/useful-example-of-a-shutdown-hook- in-java) sẽ được thực thi trên chấm dứt JVM (sau khi bạn gọi 'exit'). – dotvav

2

Một trong những lý do để sử dụng mã thoát không phải do lỗi của ứng dụng là chúng có thể được sử dụng trong các tệp theo lô. Nếu ứng dụng của bạn là ứng dụng bảng điều khiển luôn sử dụng mã thoát thích hợp. Bạn không biết nó sẽ được sử dụng như thế nào trong tương lai.

+0

Tôi đồng ý. Tôi yêu các mã chứng minh, lối ra tương lai hiếm khi được nhìn thấy trong các chương trình mà tôi gặp phải, kỳ lạ ... có lẽ quá nhiều chi phí để suy nghĩ nhiều nhất. – insidesin

Các vấn đề liên quan