Trước hết,
Có 2 loại ngoại lệ. Đã chọn & Không được chọn.
Trường hợp ngoại lệ không được kiểm soát là những ngoại lệ mà chương trình của bạn không thể khôi phục. Giống như NullPointers, nói với bạn rằng có điều gì đó thực sự sai với logic của bạn.
Trường hợp ngoại lệ được kiểm tra là ngoại lệ thời gian chạy và từ những trường hợp ngoại lệ này bạn có thể khôi phục.
Vì vậy, bạn nên tránh sử dụng các biểu đồ bắt để tìm lớp cơ sở "Ngoại lệ". Đó là đại diện cho cả hai lần. Bạn có lẽ nên xem xét tìm kiếm các trường hợp ngoại lệ cụ thể (thường là các lớp con của các ngoại lệ thời gian chạy).
Tóm lại, có nhiều hơn thế nữa.
Bạn cũng nên nhớ rằng bạn không nên sử dụng xử lý ngoại lệ dưới dạng luồng công việc. thường chỉ ra rằng kiến trúc của bạn là bằng cách nào đó thiếu. Và như tên gọi, chúng phải được coi là "ngoại lệ" đối với việc thực hiện bình thường.
Bây giờ, xem xét mã bạn:
for(DataSource source : dataSources) {
try {
//do something with 'source'
} catch (Exception e) { // catch any exception
continue; // will just skip this iteration and jump to the next
}
//other stuff ?
}
Vì nó là, cần nắm bắt những ngoại lệ và di chuyển trên. Có lẽ có điều gì đó bạn không nói với chúng tôi? : P
Dù sao, hy vọng điều này sẽ hữu ích.
Logic bạn có ở đó hiện thực hiện chính xác điều đó. Nếu ngoại lệ đặt 'DataSource' vào trạng thái không hợp lệ, lần thử tiếp theo để sử dụng trình vòng lặp có thể ném một ngoại lệ khác. –