Java еквівалентна .NET System.InvalidOperationException


77

Я не настільки знайомий з пакетами винятків Java, як з пакетами .NET. Я потрапив у ситуацію, коли, програмуючи на C #, я б кинув a System.InvalidOperationException.

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

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

Мій клас - це об’єкт значення, який забезпечує int intValue()метод, що повертає int. Однак у деяких ситуаціях поточне значення неможливо надати як int, тому цей клас також надає, boolean isInteger()щоб дозволити користувачам API знати, коли intValue()їх можна безпечно викликати.

Якщо абонент дзвонить, intValue()коли isInteger()є false, слід створити виняток.

І питання: який тип винятку?

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

Дякую


Відповіді:


89

Киньте IllegalStateException:

Сигналізує про те, що метод був використаний у незаконний або невідповідний час. Іншими словами, середовище Java або програма Java не перебуває у відповідному стані для запитуваної операції.


13
IllegalStateExceptionбезумовно правильний для конкретного випадку, про який запитували. Зауважте, що в деяких ситуаціях, я вважаю, може бути доречнішим кинути UnsupportedOperationException. Наприклад, якщо an Iteratorне підтримує removeметод.
csauve
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.