class ThrowNull {
public static void main(String[] args) {
throw null;
}
}
Sabemos que la regla para throw es throw ThrowableInstance;
, donde ThrowableInstance
debe ser un objeto de tipo Throwable o una subclase de Throwable.¿Por qué "throw null" no crea un error de compilación en Java?
Los tipos simples, como int o char, así como las clases no arrastrables, como String y Object, no pueden utilizarse como excepciones. null
es un literal de Java especial que representa un valor nulo.
¿Por qué entonces compilar throw null;
en este código?
¿Por qué debería provocar un error en tiempo de compilación? – BoltClock
Aunque el compilador de Java no lo señala como un problema en este momento (a menos que la especificación del lenguaje cambie en algún momento futuro), claramente es un candidato para verificadores estáticos como "Sonar" para eliminar y señalar el desarrollador. Tal vez el desarrollador quería escribir "return null" ... –
Sabemos que la regla es que el resultado de llamar a 'String a() {return null}' debe ser un objeto de (sub) clase o String. Las clases simples, como Throwable o BigInteger no se pueden usar como cadenas. Null es un literal de Java especial que representa un valor nulo.Entonces, ¿por qué 'return null' no está creando ningún error de tiempo de compilación ????? !!!! Estoy exponiendo tus dobles estándares aquí. ¿Por qué te quejas de 'throw null' pero no de' return null'? No puedo renunciar a tu pregunta por lo tanto. Está muy localizado por medio de dobles estándares. – Val