Какое исключение выбрано, если список пуст в 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 ?????
}
}
}
Я запускаю этот код внутри пакета, я хочу бросить какое-то исключение, которое остановит выполнение партии.
Ответы
Ответ 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 объясняет, что это "брошено, чтобы указать, что метод был принят незаконным или несоответствующим аргументом".