Это хорошая идея, чтобы сгенерировать исключение Unchecked для плохой конфигурации?
Мое приложение использует конфигурационный файл с большим количеством настраиваемых элементов.
Например, вы можете указать пользовательское хранилище ключей с пользовательским псевдонимом, который будет использоваться для подключений WebService (вместо JVM по умолчанию). javax.net.ssl.keystore
).
Во время выполнения мы можем обнаружить, что этот псевдоним не существует в хранилище ключей, поэтому мы можем захотеть выдать исключение. Поскольку это критически важная часть приложения (и мы не можем ожидать, что приложение будет функционировать должным образом, пока конфигурация не будет исправлена), я думаю, что создание исключения Unchecked является хорошей идеей.
Правильно ли я так думаю?
Будет ли смысл создавать кастомы ConfigurationException
(который расширяет RuntimeException
) бросить в этом случае?
3 ответа
Выбранные исключения создаются для уведомления пользователей ваших методов о том, что метод может вызвать конкретное исключение. Так что пользователи могут решить, что делать, когда мы получим это исключение.
Если ваше требование: "Приложение не должно выполняться, если конфигурации не верны", и не существует метода, который пользователь может запустить, чтобы обойти его (в блоке try-catch), то я не вижу никакой причины делать это проверенным исключением (зачем делать пользователи выполняют ненужную работу, если мы знаем, что это бесполезно).
Таким образом, в этом случае я бы также пошел на непроверенное исключение.
Непроверенное исключение указывает на ошибку в программе или системную ошибку. Например, ArrayIndexOutOfBoundsException
или же NullPointerException
не должно происходить в программе, и если они происходят, они обычно указывают на ошибку.
При проверке пользовательского ввода, либо прямого пользовательского ввода, либо пользовательского ввода через файл конфигурации, исключение не указывает на ошибку. Поэтому это должно быть проверенное исключение, чтобы напомнить программисту, который вызывает ваш метод, что исключение, скорее всего, не возникнет и должно быть перехвачено. Улавливая исключение, вы можете создать удобное сообщение об ошибке, которое указывает на решение. (Вы не хотите, чтобы конечный пользователь видел сгенерированный Java Exception in thread ...
сообщение!)
Я думаю, что вы должны создать проверенное исключение, и когда вы поймаете его, закройте программу в блоке catch после отображения сообщения или чего-то еще. Непроверенные исключения относятся к ошибкам программирования и должны быть исправлены разработчиком. Проверьте исключения для условий, которые могут произойти, но мы не можем это контролировать. Вы знаете, что файл конфигурации может быть поврежден, но вы не можете предотвратить его и не можете его контролировать. Я бы пошел с проверенным исключением.