"Sự khác biệt lớn giữa một điều mà có thể đi sai và một điều rằng không thể nào đi sai là khi một điều mà không thể nào đi sai đi sai nó thường hóa ra là không thể có được tại hoặc sửa chữa. " -Douglas AdamsLàm thế nào tôi có thể xử lý một IOException mà tôi biết không bao giờ có thể được ném, trong một cách an toàn và có thể đọc được?
Tôi có một lớp FileItems. FileItems constructor có một tập tin, và ném một ngoại lệ (FileNotFoundException) nếu tập tin không tồn tại. Các phương thức khác của lớp đó cũng liên quan đến các hoạt động của tệp và do đó có khả năng ném FileNotFoundException. Tôi muốn tìm một giải pháp tốt hơn. Một giải pháp không yêu cầu các lập trình viên khác phải xử lý tất cả các FileNotFoundExceptions vô cùng khó lường này.
Các dữ kiện của vấn đề:
- Các tập tin đã được kiểm tra để tồn tại nhưng khả năng rất khó xảy ra tồn tại mà thông qua một số lỗi nghiêm trọng của thực tế các tập tin có thể bị xóa trước khi phương pháp này được gọi.
- Vì xác suất xảy ra 1 là vô cùng không giống và không thể phục hồi, tôi muốn xác định ngoại lệ không được kiểm soát.
- Tệp đã được tìm thấy tồn tại, buộc các lập trình viên khác viết mã và bắt được FileNotFoundException được kiểm tra có vẻ tẻ nhạt và vô dụng. Chương trình sẽ hoàn toàn thất bại tại thời điểm đó. Ví dụ: luôn có khả năng máy tính có thể catch fire, but no one is insane enough to force other programmers to handle that as a checked exception.
- Đôi khi tôi gặp phải vấn đề ngoại lệ này và xác định các ngoại lệ tùy chỉnh không được kiểm tra mỗi khi tôi gặp sự cố này (giải pháp cũ của tôi) là mệt mỏi và thêm vào mã-bloat.
Mã này hiện trông như thế này
public Iterator getFileItemsIterator() {
try{
Scanner sc = new Scanner(this.fileWhichIsKnowToExist);
return new specialFileItemsIterator(sc);
} catch (FileNotFoundException e){ //can never happen}
return null;
}
Làm thế nào tôi có thể làm tốt hơn này, mà không cần xác định một FileNotFoundException tùy chỉnh không được kiểm soát? Có cách nào để bỏ một checkedException đến một uncheckException không?
Các lỗi nghiêm trọng của thực tế xảy ra một cách đáng ngạc nhiên thường xuyên. –
Các lỗi của thực tế đã phá vỡ phần mềm hoàn hảo của tôi cả tuần. Tôi đã cố gắng để nộp một vài báo cáo lỗi nhưng nó xuất hiện máy chủ jira của họ là xuống cũng http://jira.reality.net/ –