Petar me señaló a 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.
}
Así que en este contexto se podría utilizar un IllegalStateException, aunque se dice:
inicia cuando una acción se trató en una momento en que la máquina virtual no está en el estado correcto.
Y un estado de VM 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: acaba de definir 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 tratar de encontrar la mejor Excepción apropiado del paquete java.lang
.
En Java sería más un error que una excepción ... Esa es la forma en que la JVM nos dice que algo salió terriblemente mal. –
@Andreas_D - ¿Qué quieres decir :) No puedo conectar tu publicación a la pregunta. –
@Petar: en Java tenemos dos tipos de Throwables: errores y excepciones. Los errores generalmente son arrojados por la máquina virtual. Mi comprensión de la IOE es que la máquina virtual detecta que no se puede ejecutar un método. Supongo que en Java tendrías que modificar el bytecode cargado en tiempo de ejecución para tener este efecto, mientras que en C#, un dll colapsado o descargado podría conducir a esta excepción, y en este caso, la JVM se quejaría, con un error. –