Я не так хорошо знаком с пакетами исключений Java, как и с .NET. Я в ситуации, когда, программируя в С#, я бы выбрал System.InvalidOperationException
.
Перед созданием моего собственного подкласса java.lang.RuntimeException
мне нужно знать, есть ли подобный тип исключения, который я должен использовать в Java.
Точный сценарий:
Мой класс - это объект значения, который предоставляет метод int intValue()
, возвращающий int. Однако в некоторых ситуациях текущее значение не может быть представлено как int, поэтому этот класс также предоставляет boolean isInteger()
, чтобы пользователи API могли знать, когда можно безопасно вызвать intValue()
.
Если вызывающий абонент вызывает intValue()
, когда isInteger()
равен false
, следует вызвать исключение.
И вопрос: какой тип исключения?
Я знаю, что этот вопрос может не иметь правильного ответа, но, учитывая, что у меня нет большого опыта разработки Java-API, я хочу узнать от других разработчиков Java, что они ожидали бы в этом сценарии.
спасибо
Выбросьте IllegalStateException
:
Сигналы о том, что метод был вызван в незаконное или ненадлежащее время. Другими словами, среда Java или Java-приложение не находится в соответствующее состояние для запрашиваемого операции.
IllegalStateException
определенно правильно для конкретного случая, о котором спрашивали. Обратите внимание, что в некоторых ситуациях я считаю, что было бы более уместно выдавать UnsupportedOperationException
. Например, если Iterator
не поддерживает метод remove
.