Tôi đang phân tích cú pháp các tệp nhật ký của bên thứ ba chứa ngày / giờ bằng Joda. Ngày / giờ ở một trong hai định dạng khác nhau, tùy thuộc vào độ tuổi của tệp nhật ký mà tôi đang phân tích cú pháp.
Hiện tại tôi có mã như thế này:
try {
return DateTimeFormat.forPattern("yyyy/MM/dd HH:mm:ss").parseDateTime(datePart);
} catch (IllegalArgumentException e) {
return DateTimeFormat.forPattern("E, MMM dd, yyyy HH:mm").parseDateTime(datePart);
}
Điều này có hiệu quả nhưng trái ngược với lời khuyên của Joshua Bloch từ Phiên bản Java thứ 2 hiệu quả (Mục 57: Chỉ sử dụng ngoại lệ cho các điều kiện ngoại lệ). Nó cũng làm cho việc xác định xem IllegalArgumentException có xảy ra do ngày / giờ không đúng trong tệp nhật ký không.
Bạn có thể đề xuất một cách tiếp cận tốt hơn mà không sử dụng sai các ngoại lệ không?