2010-08-01 28 views
63

Nie jestem tak dobrze zaznajomiony z pakietami wyjątków Javy, jak i .NET. Jestem w sytuacji, w której, jeśli programowałem w C#, rzuciłbym System.InvalidOperationException.Odpowiada Java .NET System.InvalidOperationException

Zanim utworzę własną podklasę java.lang.RuntimeException, muszę wiedzieć, czy istnieje podobny wyjątek, jaki powinienem podać w Javie.

Dokładny scenariusz:

Moja klasa jest obiektem wartość, która stanowi metodę int intValue(), wracając int. Jednak w niektórych sytuacjach bieżąca wartość nie może być podana jako int, więc ta klasa zapewnia także boolean isInteger(), aby umożliwić użytkownikom API poznanie, kiedy można bezpiecznie wywołać intValue().

Jeśli dzwoniący dzwoni pod numer intValue(), gdy isInteger() jest false, powinien zostać zgłoszony wyjątek.

Pytanie brzmi: Jaki typ wyjątku?

Wiem, że to pytanie może nie mieć poprawnej odpowiedzi , ale biorąc pod uwagę, że nie mam dużego doświadczenia w projektowaniu interfejsów Java API, chcę dowiedzieć się od innych deweloperów Javy, czego oczekują od tego scenariusz.

dzięki

+0

możliwe duplikat [Czy istnieje odpowiednik Java z C# 's InvalidOperationException?] (Http://stackoverflow.com/questions/3165701/is-there-a-java-equivalent-of-cs-invalidoperationexception) – Carl

Odpowiedz

72

rzucić IllegalStateException:

sygnały, że metoda została przywołana w nielegalnym lub niewłaściwym czasie. Innymi słowy, środowisko Java lub aplikacja Java nie znajduje się w odpowiednim stanie dla żądanej operacji .

+9

' IllegalStateException' jest zdecydowanie poprawny dla konkretnego przypadku, o który pytano. Zauważ, że w niektórych sytuacjach wydaje mi się, że lepiej jest rzucić 'UnsupportedOperationException'. Na przykład, jeśli 'Iterator' nie obsługuje metody' remove'. – csauve

Powiązane problemy