Как вызвать исключение из конструктора enum?

Как вывести исключение из конструктора enum? Например:

public enum RLoader {
  INSTANCE;
  private RLoader() throws IOException {
   ....
  }
}

выдает ошибку

Необработанный тип исключения IOException

12
задан Tom Hawtin - tackline 23 August 2010 в 11:01
поделиться

2 ответа

Поскольку экземпляры создаются в статическом инициализаторе, вместо этого генерируйте исключение ExceptionInInitializerError.

18
ответ дан 2 December 2019 в 07:01
поделиться

Этот сценарий не может работать.

Вы пытаетесь создать проверенное исключение из конструктора.

Этот конструктор вызывается объявлением записи перечисления INSTANCE , поэтому проверенное исключение не может быть обработано правильно.

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

Также, если вы хотите вызвать исключение IOException , я предполагаю, что вы хотите инициализировать что-то из файла, поэтому вам, возможно, следует рассмотреть эту статью о динамических перечислениях .

1
ответ дан 2 December 2019 в 07:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: