Sebagai bahasa pengaturcaraan yang penting, Java melibatkan sejumlah besar pengendalian pengecualian semasa proses pelaksanaan, antaranya IllegalArgumentException ialah jenis pengecualian yang kerap digunakan. Jadi, bilakah IllegalArgumentException muncul?
IllegalArgumentException bermakna apabila parameter yang menyalahi undang-undang atau salah dihantar ke kaedah, program akan membuang pengecualian ini. Khususnya, IllegalArgumentException biasanya berlaku dalam senario berikut:
1. Ketidakpadanan jenis parameter
Apabila kita menghantar parameter kepada kaedah, jika jenisnya tidak sepadan dengan jenis parameter formal yang ditakrifkan oleh kaedah tersebut, IllegalArgumentException akan dilemparkan tidak normal. Sebagai contoh, jika parameter rentetan jenis dihantar kepada kaedah yang memerlukan hujah jenis integer, pengecualian ini akan dilemparkan.
Kod sampel:
public class Test { public static void printNumber(int number) { System.out.println(number); } public static void main(String[] args) { String str = "123"; printNumber(str); // 抛出IllegalArgumentException异常 } }
2 Nilai parameter adalah menyalahi undang-undang
Kadangkala, jika julat nilai parameter diberikan dalam kaedah, jika parameter yang dihantar tidak berada dalam julat ini, IllegalArgumentException juga akan dilemparkan. Sebagai contoh, jika parameter integer kurang daripada 0 dihantar kepada kaedah yang hanya menerima parameter yang lebih besar daripada atau sama dengan 0, pengecualian ini akan dilemparkan.
Kod sampel:
public class Test { public static void divide(int dividend) { if (dividend < 0) { throw new IllegalArgumentException("参数不合法,除数不能为负数"); } System.out.println(10 / dividend); } public static void main(String[] args) { divide(-2); // 抛出IllegalArgumentException异常 } }
3. Pengecualian penuding nol
Jika kaedah tidak membenarkan parameter menjadi batal, tetapi anda melepasi nilai nol, IllegalArgumentException juga akan dilemparkan. Sebagai contoh, jika rentetan kosong dihantar kepada kaedah yang tidak membenarkan rentetan kosong, pengecualian ini akan dibuang.
Kod sampel:
public class Test { public static void printString(String str) { if (str == null || str.isEmpty()) { throw new IllegalArgumentException("参数不合法,必须为非空字符串"); } System.out.println(str); } public static void main(String[] args) { String str = null; printString(str); // 抛出IllegalArgumentException异常 } }
Dalam senario di atas, jika IllegalArgumentException berlaku, kami boleh mempertimbangkan untuk menggunakan pernyataan cuba-tangkap untuk menangkap dan mengendalikan pengecualian. Pada masa yang sama, apabila mereka bentuk program, kita juga harus cuba menyeragamkan pemindahan parameter untuk mengelakkan pengecualian yang disebabkan oleh parameter.
Atas ialah kandungan terperinci Dalam senario apakah IllegalArgumentException berlaku di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!