Подтвердить что ты не робот

Какое исключение выбрано, если список пуст в java?

У меня есть следующие сомнения относительно того, какое исключение выбрано, если список пуст

public class XYZ implements Runnable {
    private List<File> contractFileList;

    @Override
    public void run() { 
        contractFileList = some method that will return the list;
        //now i want to check if returned contractFile is empty or not , if yes then raise the exception
        if (contractFileList.isEmpty()) {
            // throw new ?????
        }
    }
}

Я запускаю этот код внутри пакета, я хочу бросить какое-то исключение, которое остановит выполнение партии.

4b9b3361

Ответ 1

Это выглядит как IllegalStateException для меня.

Сообщает, что метод был вызван в незаконное или ненадлежащее время.

В основном ваш объект не находится в допустимом состоянии для вызова run.

Я бы не создал для вас собственное исключение, если вы не ожидаете, что его намеренно поймают в другом месте. Похоже, что это произойдет только из-за ошибки программирования, а не из-за неожиданной ситуации... и в этом случае нечеткое исключение подходит, а IllegalStateException достаточно четко описывает общий характер проблемы.

Вы можете поместить детальную причину в сообщение исключения (объясняя, что "незаконное состояние" было в том, что список пуст).

Я предлагаю вам попытаться избежать создания отдельного типа исключения для каждой маленькой вещи, которая может пойти не так - если вы не поймаете эти исключения отдельно, разные типы не помогают; это только добавляет к беспорядку. Исключение, которое имеет правильный широкий тип, но имеет полезное сообщение, обеспечивает столько же выгоды, сколько и когнитивных издержек.

Обратите внимание, что вы не можете использовать проверенное исключение, если вы все равно реализуете Runnable.run, так как это не объявлено, чтобы выкинуть любые проверенные исключения. Вам нужно было бы обернуть его в неконтролируемое исключение (например, RuntimeException), в результате чего еще меньше пользы.

Ответ 2

Сделайте свое собственное исключение, выполнив подклассификацию Exception и сделайте описательное имя.

public class MyEmptyListException extends Exception {
    public MyEmptyListException(String message) {
        super(message);
    }
}

Ответ 3

Я бы сохранил эти точки в уме, если создаю какой-либо пользовательский класс исключений.

  • Убедитесь, что у вас есть последовательный способ обработки исключений во всем приложении.
  • Будет ли новый пользовательский исключение предоставлять разработчику больше информации, используя ваш метод восстановления после исключения?

Пожалуйста, найдите ссылки, которые я нашел полезными для понимания обработки исключений.

Ответ 4

Вы должны бросить User defined Exception.

Вы должны создать свой собственный класс исключения и затем выбросить его.

Ответ 5

Я бы выбрал IllegalArgumentException. Поскольку Javadoc объясняет, что это "брошено, чтобы указать, что метод был принят незаконным или несоответствующим аргументом".