Я использую компаратор для сортировки файлов по дате изменения. Эти файлы должны обрабатываться для содержащихся данных и удаляться после. Я должен убедиться, что файлы находятся в последовательном порядке перед их обработкой. Ниже я до сих пор.Каков правильный способ обработки IOException в компараторе?
public class FileComparator implements Comparator<Path> {
@Override
public int compare(Path o1, Path o2) {
try {
return Files.getLastModifiedTime(o1).compareTo(Files.getLastModifiedTime(o2));
} catch (IOException exception) {
//write to error log
//***
}
}
}
*** Здесь я застрял. Мне нужно вернуть int, потому что для этого требуется сравнение, но я не хочу возвращать нуль и иметь ложную эквивалентность, когда он терпит неудачу.
Я пробовал реструктурировать код, но если getLastModifiedTime() не работает, o1Modified и o2Modified будут иметь значение null.
public class FileComparator implements Comparator<Path> {
@Override
public int compare(Path o1, Path o2) {
FileTime o1Modified = null;
FileTime o2Modified = null;
try {
o1Modified = Files.getLastModifiedTime(o1);
o2Modified = Files.getLastModifiedTime(o2);
} catch (IOException exception) {
//write to error log
}
return o1Modified.compareTo(o2Modified);
}
}
Есть ли стандартный способ справиться с такими ситуациями?
Если вы получили «IOException», подразумевается, что с вашим путем (-ами) что-то не так. Если один (или оба) ваших путей указывают на файл, который не существует, не имеет смысла говорить, что они неравны? Вы можете сортировать это, как хотите (путем возврата либо -1, либо 1, в зависимости от конкретного случая). Другой способ сказать, что все недопустимые пути одинаково недействительны. – Hypino