Java эквивалентно .NET System.InvalidOperationException

59

Я не так хорошо знаком с пакетами исключений Java, как и с .NET. Я в ситуации, когда, программируя в С#, я бы выбрал System.InvalidOperationException.

Перед созданием моего собственного подкласса java.lang.RuntimeException мне нужно знать, есть ли подобный тип исключения, который я должен использовать в Java.

Точный сценарий:

Мой класс - это объект значения, который предоставляет метод int intValue(), возвращающий int. Однако в некоторых ситуациях текущее значение не может быть представлено как int, поэтому этот класс также предоставляет boolean isInteger(), чтобы пользователи API могли знать, когда можно безопасно вызвать intValue().

Если вызывающий абонент вызывает intValue(), когда isInteger() равен false, следует вызвать исключение.

И вопрос: какой тип исключения?

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

спасибо

Теги:
exception-handling
design

1 ответ

74
Лучший ответ

Выбросьте IllegalStateException:

Сигналы о том, что метод был вызван в незаконное или ненадлежащее время. Другими словами, среда Java или Java-приложение не находится в соответствующее состояние для запрашиваемого операции.

  • 10
    IllegalStateException определенно правильно для конкретного случая, о котором спрашивали. Обратите внимание, что в некоторых ситуациях я считаю, что было бы более уместно выдавать UnsupportedOperationException . Например, если Iterator не поддерживает метод remove .

Ещё вопросы

Сообщество Overcoder
Наверх
Меню