2010-08-01 13 views
63

No estoy tan familiarizado con los paquetes de excepción de Java como con los de .NET. Estoy en una situación en la que, si programara en C#, arrojaría un System.InvalidOperationException.Java equivalente a .NET System.InvalidOperationException

Antes de crear mi propia subclase java.lang.RuntimeException, necesito saber si hay un tipo de excepción similar que debería arrojar en Java.

El escenario exacto es:

Mi clase es un objeto de valor que proporciona un método int intValue(), devolver un int. Sin embargo, en algunas situaciones, el valor actual no se puede proporcionar como int, por lo que esta clase también proporciona un boolean isInteger() para permitir que los usuarios de la API sepan cuándo intValue() se puede invocar de forma segura.

Si una persona que llama llama al intValue() cuando isInteger() es false, se debe emitir una excepción.

Y la pregunta es: ¿Qué tipo de excepción?

Sé que esta pregunta podría no tener una respuesta correcta , pero teniendo en cuenta que no tengo mucha experiencia en el diseño de las API de Java, quiero saber de otros desarrolladores de Java lo que se puede esperar para ser lanzado en este guión.

gracias

+0

posible duplicado de [¿Hay un equivalente Java de InvalidOperationException C# 's?] (Http://stackoverflow.com/questions/3165701/is-there-a-java-equivalent-of-cs-invalidoperationexception) – Carl

Respuesta

72

lanzar una IllegalStateException:

señales que un método que se ha invocado en un momento ilegales o inapropiadas. En otras palabras, el entorno Java o la aplicación Java no está en un estado apropiado para la operación solicitada.

+9

' IllegalStateException' es definitivamente correcto para el caso específico sobre el que se preguntó. Tenga en cuenta que, en algunas situaciones, creo que puede ser más apropiado lanzar una 'UnsupportedOperationException'. Por ejemplo, si un 'Iterator' no admite el método' remove'. – csauve

Cuestiones relacionadas