Đối với runnable Jar programs Tôi tạo, tôi có thể đọc các ngoại lệ chưa được xử lý nếu tôi chạy nó từ dấu nhắc lệnh (java -jar myprogram.jar
).Làm thế nào để tạo các chương trình Jar runnable mà không thất bại âm thầm?
Ví dụ:
public static void main(String args[]) {
try {
EntireProgram();
} catch (Throwable t) {
throw new Error("somehow our error handling code has errors");
}
}
public static void EntireProgram() {
System.out.println(1/0);
}
dòng lệnh đầu ra:
Tuy nhiên, nếu tôi chạy chương trình Jar bằng cách nhấp đúp nó (dự kiến của hầu hết người dùng cuối cùng) , các ngoại lệ chưa được xử lý vẫn giữ nguyên im lặng. Tôi đã nhận thấy rằng đây là trái ngược với "chương trình Windows bản địa" mà tôi tin rằng có trường hợp ngoại lệ unhandled xử lý bởi bộ xử lý hệ điều hành mặc định (tin nhắn thoại modal):
Các lợi thế của việc xử lý các ngoại lệ chưa được giải quyết theo cách này là người dùng sẽ biết một điều gì đó sai đã xảy ra (và có thể báo cáo điều đó, hy vọng).
Làm cách nào để tôi có thể xử lý ngoại lệ không được xử lý của chương trình theo cách như vậy?
Tôi không nghĩ điều này sẽ hiệu quả. Tôi gặp khó khăn trong một vấn đề, nơi ứng dụng dựa trên 'swing' của tôi yêu cầu' Java1.6' trở lên, nhưng khi tôi đang thực thi ứng dụng đó trong phiên bản Java thấp hơn, nó không hiển thị bất cứ điều gì, thậm chí tôi đã đưa ra 'showMessageDialog' chặn, vì có lỗi gọi là 'ClassNotFoundError'. – Vishrant
@ user3505725, Có * sẽ * vẫn là lỗi. Chúng tôi không thể mong đợi mã sẽ không có lỗi, do đó chúng tôi không thể mong đợi mã xử lý lỗi (showMessageDialog) bị lỗi. Làm thế nào để chúng ta thay đổi trách nhiệm của việc xử lý lỗi cho hệ điều hành? – Pacerier