Okey, todos sabemos la forma normal de lanzar una IllegalArgumentException en Java:
throw new IllegalArgumentException(); // 37 characters
Pero debe haber una forma más corta (como en menos caracteres) de hacerlo. ¿Cómo podemos producir una excepción java.lang.IllegalArgumentException con aún menos código?
- El fragmento de código tiene que compilarse y ejecutarse en Java 7.
- Sin importaciones / paquetes externos (por ejemplo, sin usar
java.util.Arrays.toString()
)- única excepción: java.lang porque se importa automáticamente.
- Puede agregar sus propios métodos / clases.
- Debe arrojar una java.lang.IllegalArgumentException
- Editar: la salida de error (stacktrace) debe nombrarla java.lang.IllegalArgumentException, por lo que no hay subclases de la misma.
Para tener una base para comenzar:
class Titled {
public static void main(String[] args) {
throw new IllegalArgumentException();
}
}
InterruptedException
.unreported exception InterruptedException; must be caught or declared to be thrown
throws Exception
almain
método. He añadido una nota en mi publicación.IllegalArgumentException
de memoria. No hay necesidad de herramientas como grep. Excepto que las reglas cambiadas lo hacen inválido. :-(Aquí hay una pequeña forma de hacerlo, en
1713 caracteres :Lanza un
NumberFormatException
, que es unIllegalArgumentException
. Esto y esto lo verifican.Equivalentemente, uno podría hacer
fuente
Exception in thread "main" java.lang.IllegalArgumentException at Untitled.main(Titled.java:4)
. Si falla (línea, archivo, stacktrace) no importa.22 caracteres:
Ejecutando
Javadoc de ejemplo : java.lang.Character.toChars (int)
Algunas variantes bonitas:
~i
es lo mismo que-1 * (i+1)
porque invierte los bits. Entonces obtendremos un parámetro ilegal, porque es más pequeño que 0.1<<7
creará un número demasiado alto al cambiar el 1 siete veces. (lo mismo que multiplicarlo 7 veces por 2). El último valor aceptado parece ser1114111
,1114112
fallará. Nota: esto puede cambiar según su entorno y no siempre es confiable.Consulte los "Operadores Bitwise y Bit Shift" y "Tipos de datos primitivos" de Oracle Docs.
28 caracteres:
Y si no te gusta usar la clase de personaje en una competencia de conteo de personajes *:
*) Solo para hacer este juego de palabras.
fuente
~0
también funciona)Character.toChars(~-0);
funciona.21 caracteres:
Según la documentación,
getProperty
ysetProperty
tirarIllegalArgumentException
si la clave está vacía.fuente
25 personajes
Crea un vector con una longitud no válida (negativa):
Muestra:
fuente
Aquí hay 24 caracteres:
Esto arrojará un
IllegalFormatException
, que es unIllegalArgumentException
.fuente
19 caracteres:
Lanza
java.util.UnknownFormatConversionException
, que hereda deIllegalFormatException
, que, a su vez, hereda deIllegalArgumentException
;fuente
14 personajes
17 personajes
En cuanto al código que arroja directamente IllegalArgumentException, estos lo harán.
así que el código directo es de 17 caracteres, si estás siendo un súper adherente y estás contando los caracteres para agregar una cláusula throws para la excepción interrumpida, puedes acortarlo simplemente lanzando la clase de excepción sin procesar
fuente
this.wait(-1)
no funciona en la función principal, debido al ser principalstatic
.Thread.sleep(-1)
requiere que agregue una declaración de lanzamiento a la función, para que se vuelva a alargar.error: unreported exception InterruptedException; must be caught or declared to be thrown