Okey, wir alle kennen den normalen Weg, eine IllegalArgumentException in Java auszulösen:
throw new IllegalArgumentException(); // 37 characters
Es muss jedoch eine kürzere (wie bei weniger Zeichen) Möglichkeit geben, dies zu tun. Wie können wir eine java.lang.IllegalArgumentException mit noch weniger Code erzeugen?
- Das Codefragment muss in Java 7 kompiliert und ausgeführt werden.
- Keine Importe / Fremdverpackungen (zB nicht verwenden
java.util.Arrays.toString()
)- einzige ausnahme: java.lang da es automatisch importiert wird.
- Sie können eigene Methoden / Klassen hinzufügen.
- Es muss eine java.lang.IllegalArgumentException auslösen
- Bearbeiten: Die Fehlerausgabe (Stacktrace) muss java.lang.IllegalArgumentException heißen, also keine Unterklassen davon.
Eine Basis haben, von der aus man beginnen kann:
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
diemain
Methode automatisch . Ich habe eine Notiz in meinen Beitrag eingefügt.IllegalArgumentException
Erinnerung zu finden . Werkzeuge wie grep sind nicht erforderlich. Außer die geänderten Regeln machen es ungültig. :-(Hier ist ein schöner kurzer Weg, um es in
1713 Zeichen zu tun :Es wirft eine
NumberFormatException
, die eine istIllegalArgumentException
. Dies und das bestätigen es.Genauso könnte man es tun
quelle
Exception in thread "main" java.lang.IllegalArgumentException at Untitled.main(Titled.java:4)
. Wo es fehlschlägt (Zeile, Datei, Stacktrace) spielt keine Rolle.22 Zeichen:
Beispiel
Javadoc ausführen: java.lang.Character.toChars (int)
Einige gut aussehende Varianten:
~i
ist das gleiche wie,-1 * (i+1)
weil es die Bits invertiert. Wir erhalten also einen ungültigen Parameter, da dieser kleiner als 01<<7
ist. Durch siebenmaliges Verschieben der 1 wird eine zu hohe Zahl erzeugt. (Wie 7 mal mit 2 multiplizieren). Der zuletzt akzeptierte Wert scheint zu sein1114111
,1114112
wird fehlschlagen. Hinweis: Dies kann sich je nach Ihrer Umgebung ändern und ist möglicherweise nicht immer zuverlässig.Weitere Informationen finden Sie in den Oracle-Dokumenten "Bitweise Operatoren und Bitverschiebungsoperatoren" und "Primitive Datentypen".
28 Zeichen:
Und wenn Sie die Charakterklasse nicht gerne in einem Charakterzählwettbewerb verwenden *:
*) Nur um dieses Wortspiel zu machen.
quelle
~0
funktioniert auch)Character.toChars(~-0);
funktioniert sogar .21 Zeichen:
Wie in der Dokumentation beschrieben,
getProperty
undsetProperty
werfen,IllegalArgumentException
wenn der Schlüssel leer ist.quelle
25 Zeichen
Erstellt einen Vektor mit einer ungültigen (negativen) Länge:
Zeigt an:
quelle
Hier sind 24 Zeichen:
Dies wirft eine
IllegalFormatException
, die eine istIllegalArgumentException
.quelle
19 Zeichen:
Würfe
java.util.UnknownFormatConversionException
, von denen erbt, vonIllegalFormatException
denen erbtIllegalArgumentException
;quelle
14 Zeichen
17 Zeichen
In Bezug auf Code, der direkt eine IllegalArgumentException auslöst, ist dies der Fall.
Der direkte Code besteht also aus 17 Zeichen. Wenn Sie ein Super-Stickler sind und die Zeichen zählen, um eine Throws-Klausel für die unterbrochene Ausnahme hinzuzufügen, können Sie sie durch einfaches Auslösen der Raw-Exception-Klasse verkürzen
quelle
this.wait(-1)
funktioniert nicht in der Hauptfunktion, aufgrund von Hauptfunktionstatic
.Thread.sleep(-1)
erfordert, dass Sie der Funktion eine Throws-Deklaration hinzufügen, damit sie wieder länger wird.error: unreported exception InterruptedException; must be caught or declared to be thrown