que - ¿Existe un equivalente Java de InvalidOperationException de C#?
porque aprender c# (2)
Esta pregunta ya tiene una respuesta aquí:
Estoy convirtiendo algún código C # a Java y necesito incluir una excepción que sea similar a la InvalidOperationException de C #. ¿Existe tal cosa? ¿También hay una lista de tipos de excepción equivalentes en los dos idiomas? Gracias.
Creo que en mi caso particular IllegalStateException es el más apropiado. Gracias por todas las respuestas.Petar me señaló este código de ejemplo (de msdn)
void WriteLog()
{
if (!this.logFile.CanWrite)
{
throw new System.InvalidOperationException("Logfile cannot be read-only");
}
// Else write data to the log and return.
}
Entonces, en este contexto podría usar una IllegalStateException, aunque dice:
Lanzado cuando se intenta una acción en un momento en que la máquina virtual no está en el estado correcto.
Y un estado de máquina virtual ilegal definitivamente no es el problema en el ejemplo de referencia anterior. Aquí, el problema es que el objeto no es válido porque hace referencia a un archivo de registro de solo lectura.
Mi propio consejo: simplemente defina una excepción personalizada como
package com.pany.project;
public class InvalidOperationException extends RuntimeException {
// add constructors with call to super as needed
}
Para mí, eso es mucho más fácil que intentar encontrar la mejor excepción del paquete java.lang
.
Probablemente IllegalStateException
.
De lo que leí sobre InvalidOperationException: "La excepción que se lanza cuando una llamada a un método no es válida para el estado actual del objeto".
Para IllegalStateException
: " IllegalStateException
que un método ha sido invocado en un momento ilegal o inapropiado. En otras palabras, el entorno Java o la aplicación Java no se encuentran en un estado apropiado para la operación solicitada".
Según cómo esté utilizando InvalidOperationException
, también podría ver IllegalArgumentException
y UnsupportedOperationException
siendo lo que desea. Lo primero implica que, en general, el método está bien para llamar, esta vez se pasó basura; el último implica que el método nunca es apropiado para llamar a esta instancia (a diferencia de IllegalStateException
, lo que implica que podría ser apropiado llamar el método del sujeto a veces, pero no por el momento).
No tengo conocimiento de una traducción general de excepciones de c # <=> Java.