пусто Необязательно с пользовательским описательным исключением - PullRequest
0 голосов
/ 15 марта 2020

Я ищу способ вернуть с пустыми данными необязательного объекта, почему он пуст, и подробности для дальнейшего изучения. Было бы неплохо, чтобы поставщик исключений был передан методу Optional.empty, чтобы указать исключение по умолчанию, которое будет выброшено, если потребитель дополнительного объекта ожидает, что оно не будет пустым. Что-то вроде:

Optional<File> openFile(String fileName){
    if (!fileExists(fileName)) {
        return Optional.empty(() -> new RuntimeException("file " + fileName + " not found!"));
    }
    return Optinal.of(openFile(fileName));
}

// those calls of the method will throw the RuntimeException with detailed description
File openFile = openFile("notexistingfile.txt").get();
File openFile = openFile("notexistingfile.txt").orElseThrow();

Я знаю об orElseThrow за исключением поставщика, но тогда это должно быть сделано вне метода для каждого вызова. Есть ли жизнеспособная стратегия для этого?

...