Oke, kita semua tahu cara normal untuk melempar IllegalArgumentException di Jawa:
throw new IllegalArgumentException(); // 37 characters
Tetapi harus ada cara yang lebih pendek (seperti dalam karakter kurang) untuk melakukannya. Bagaimana kita bisa menghasilkan java.lang.IllegalArgumentException dengan kode yang lebih sedikit?
- Fragmen kode harus dikompilasi dan dijalankan di java 7.
- Tidak ada paket impor / eksternal (mis. Tidak menggunakan
java.util.Arrays.toString()
)- satu-satunya pengecualian: java.lang karena secara otomatis diimpor.
- Anda dapat menambahkan metode / kelas sendiri.
- Itu harus membuang java.lang.IllegalArgumentException
- Sunting: output kesalahan (stacktrace) harus menamainya java.lang.IllegalArgumentException, jadi tidak ada subkelasnya.
Untuk memulai dari:
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
kemain
metode. Saya telah menambahkan catatan di posting saya.IllegalArgumentException
dengan ingatan saya . Tidak perlu alat seperti grep. Kecuali aturan yang diubah membuatnya tidak valid. :-(Inilah cara singkat yang baik untuk melakukannya, dalam
1713 karakter :Itu melempar
NumberFormatException
, yang merupakanIllegalArgumentException
. Ini dan ini memverifikasinya.Setara, orang bisa melakukannya
sumber
Exception in thread "main" java.lang.IllegalArgumentException at Untitled.main(Titled.java:4)
. Jika gagal (baris, file, stacktrace) tidak masalah.22 karakter:
Contoh menjalankan
Javadoc: java.lang.Character.toChars (int)
Beberapa varian yang terlihat menarik:
~i
sama seperti-1 * (i+1)
karena membalikkan bit. Jadi kita akan mendapatkan parameter ilegal, karena lebih kecil dari 0.1<<7
akan membuat angka terlalu tinggi dengan menggeser 1 tujuh kali. (sama dengan kalikan 7 kali dengan 2). Nilai yang diterima terakhir tampaknya1114111
,1114112
akan gagal. Catatan: ini mungkin berubah tergantung pada lingkungan Anda, dan mungkin tidak selalu dapat diandalkan.Lihat Oracle Docs "Operator Bitwise dan Bit Shift" dan "Tipe Data Primitif"
28 karakter:
Dan jika Anda tidak suka menggunakan kelas karakter dalam kompetisi jumlah karakter *:
*) Hanya untuk membuat permainan kata-kata ini.
sumber
~0
berfungsi juga)Character.toChars(~-0);
berhasil.21 karakter:
Sesuai dokumentasi,
getProperty
dansetProperty
membuangIllegalArgumentException
jika kunci kosong.sumber
25 Karakter
Membuat vektor dengan panjang tidak valid (negatif):
Menampilkan:
sumber
Berikut 24 karakter:
Ini akan melempar
IllegalFormatException
, yang merupakanIllegalArgumentException
.sumber
19 karakter:
Melempar
java.util.UnknownFormatConversionException
, yang mewarisi dariIllegalFormatException
, yang, pada gilirannya, mewarisi dariIllegalArgumentException
;sumber
14 Karakter
17 Karakter
Sejauh kode yang secara langsung melempar IllegalArgumentException, ini akan melakukannya.
jadi kode langsungnya adalah 17 karakter, jika Anda menjadi super stickler dan menghitung karakter untuk menambahkan klausa pelemparan untuk pengecualian terputus, Anda dapat mempersingkatnya dengan hanya melempar kelas Exception mentah
sumber
this.wait(-1)
tidak berfungsi dalam fungsi utama, karena makhluk utamastatic
.Thread.sleep(-1)
mengharuskan Anda untuk menambahkan deklarasi lemparan ke fungsi, jadi itu akan menjadi lebih lama lagi.error: unreported exception InterruptedException; must be caught or declared to be thrown