Как вызвать другой метод с методом в качестве параметра, когда указанный метод вызывает исключение? - PullRequest
0 голосов
/ 03 октября 2018

Я видел пару примеров этого, но, к сожалению, ни одного, где метод выдает исключение.

Для ясности, у меня есть один универсальный метод, который получает другой метод в качестве ссылки.

Этот метод генерирует исключение в сигнатуре своего метода, когда этот метод (returnFullName в примере) не генерирует исключение без проблем для компилятора, но когда это происходит, компилятор выдает « необработанное исключение» * .

Я до сих пор не могу понять, как решить эту проблему, есть ли идея, как обрабатывать исключения в этих случаях?

public class MyClass{
    private  static String returnFullName(String name) throws Exception{
            return "full name " + name;
        }

        public static String calculateByName(String name) {
            try {
                myGenericMethod("John Doe", RemoteFileUtils::returnFullName);
            } catch (Exception e) {
                return "fallback name";
            }
        }

         private static <T> T myGenericMethod(final String name, final Function<String, T> call) {
            //do stuff
            return call.apply(name);
         }
    }

1 Ответ

0 голосов
/ 03 октября 2018

Вы должны поймать исключение, которое может быть сгенерировано returnFullName.Он должен быть обнаружен в реализации Function, который вы передаете myGenericMethod:

    public static String calculateByName(String name) {
        return myGenericMethod("John Doe", t -> {
            try {
                return returnFullName (t);
            } catch (Exception e) {
                return "fallback name";
            }
        });
    }

Заключение вызова myGenericMethod("John Doe", RemoteFileUtils::returnFullName); в блок try-catch не помогает, поскольку myGenericMethodэто не метод, который может вызвать исключение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...