Как реализовать обработку ошибок в методе с возвращаемым типом интерфейса - PullRequest
0 голосов
/ 26 мая 2020

У меня есть метод, который складывает матрицы вместе. Мне нужно отловить ошибку, если матрицы разного размера. Когда я добавляю в свой метод попытку и ловлю, я получаю исключение в потоке «main» java .lang.Error: неразрешенная проблема компиляции: этот метод должен возвращать результат типа Matrix

Matrix в интерфейсе , часть задания я не могу изменить возвращаемый тип. Итак, как мне обработать ошибку, сохранив верный тип возвращаемого значения?

public Matrix plus(Matrix other) throws RuntimeException{
    try {
    int[][] newMatrix = this.cloneMatrix();
    int[][]mMatrix = castFromMatrix(other);

        for (int y = 0; y < mMatrix.length; y++) {
            for (int x = 0; x < mMatrix[0].length; x++) {
                newMatrix[y][x] = newMatrix[y][x] + mMatrix[y][x];
            }
        }

        Matrix sumMatrix = new EverhartMatrix(newMatrix);
        return sumMatrix;
    }

    catch (Exception e) {
        System.out.println("Plus method can not be employeed on matrices of different     sizes");}

    }

1 Ответ

0 голосов
/ 26 мая 2020

Проблема, с которой вы столкнулись, заключается в том, что вы объявляете свой метод для возврата объекта Matrix, а в разделе catch вы ничего не возвращаете, поэтому компилятор говорит, что этот метод должен возвращать результат типа Matrix, вы можете просто добавить return null; после вашего вызова System.out.println, и это решит вашу проблему, имейте в виду, что возвращение null - это плохая практика, поэтому может потребоваться изменить тип возвращаемого значения на Optional<Matrix>, а в случае возврата исключения пустой Необязательный.

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