Okej, wszyscy znamy normalny sposób zgłaszania wyjątku IllegalArgumentException w Javie:
throw new IllegalArgumentException(); // 37 characters
Ale muszą istnieć krótsze (jak w mniejszej liczbie postaci) sposoby, aby to zrobić. Jak możemy stworzyć wyjątek java.lang.IllegalArgumentException z jeszcze mniejszym kodem?
- Fragment kodu musi się skompilować i uruchomić w Javie 7.
- Brak importu / pakietów zewnętrznych (np. Nieużywanie
java.util.Arrays.toString()
)- wyjątek: java.lang, ponieważ jest on automatycznie importowany.
- Możesz dodać własne metody / klasy.
- Musi zgłosić wyjątek java.lang.IllegalArgumentException
- Edycja: dane wyjściowe błędu (stacktrace) muszą nazywać się java.lang.IllegalArgumentException, więc nie można jej podać w podklasach.
Aby mieć bazę, od której można zacząć:
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
domain
metody. Dodałem notatkę w swoim poście.IllegalArgumentException
pamięć. Nie potrzeba narzędzi takich jak grep. Tyle że zmienione reguły powodują, że jest nieważny. :-(Oto miły, krótki sposób, aby to zrobić, w
1713 znakach :Rzuca
NumberFormatException
, co jestIllegalArgumentException
. To i to zweryfikuj.Równie dobrze można to zrobić
źródło
Exception in thread "main" java.lang.IllegalArgumentException at Untitled.main(Titled.java:4)
. Gdyby zawiodło (linia, plik, stacktrace) nie ma znaczenia.22 znaki:
Uruchamianie przykład
Javadoc: java.lang.Character.toChars (int)
Kilka ładnie wyglądających wariantów:
~i
jest taki sam jak-1 * (i+1)
ponieważ odwraca bity. Otrzymamy więc niedozwolony parametr, ponieważ jest mniejszy niż 0.1<<7
stworzy zbyt wysoką liczbę, przesuwając 1 siedem razy. (to samo, co pomnożenie go 7 razy przez 2). Wydaje się1114111
,1114112
że ostatnia zaakceptowana wartość zawiedzie. Uwaga: może się to zmienić w zależności od środowiska i nie zawsze może być niezawodne.Zobacz Oracle Docs „Operatory bitowe i bitowe z przesunięciem” i „Podstawowe typy danych”
28 znaków:
A jeśli nie lubisz używać klasy postaci w konkursie liczenia postaci *:
*) Żeby zrobić ten kalambur.
źródło
~0
też działa)Character.toChars(~-0);
działa.21 znaków:
Zgodnie z dokumentacją
getProperty
isetProperty
wyrzucić,IllegalArgumentException
jeśli klucz jest pusty.źródło
25 znaków
Tworzy wektor o niepoprawnej (ujemnej) długości:
Wyświetla:
źródło
Oto 24 znaki:
To rzuci an
IllegalFormatException
, który jestIllegalArgumentException
.źródło
19 znaków:
Rzuty
java.util.UnknownFormatConversionException
, które dziedziczy, zIllegalFormatException
kolei dziedziczyIllegalArgumentException
;źródło
14 znaków
17 znaków
Jeśli chodzi o kod, który bezpośrednio zgłasza IllegalArgumentException, zrobią to.
więc kod bezpośredni to 17 znaków, jeśli jesteś super-stickerem i liczysz znaki, aby dodać klauzulę throws dla przerwanego wyjątku, możesz go skrócić, po prostu rzucając surową klasę Exception
źródło
this.wait(-1)
nie działa w głównej funkcji z powodu głównej istotystatic
.Thread.sleep(-1)
wymaga dodania deklaracji wyrzutów do funkcji, aby znów się wydłużyła.error: unreported exception InterruptedException; must be caught or declared to be thrown