Rumah >Java >javaTutorial >IllegalArgumentException atau NullPointerException: Pengecualian yang manakah untuk Dilemparkan untuk Parameter Penetap Null?

IllegalArgumentException atau NullPointerException: Pengecualian yang manakah untuk Dilemparkan untuk Parameter Penetap Null?

Barbara Streisand
Barbara Streisandasal
2024-12-14 15:09:11454semak imbas

IllegalArgumentException or NullPointerException: Which Exception to Throw for Null Setter Parameters?

Argumen Null atau Invalid: IllegalArgumentException lwn. NullPointerException

Dilema biasa apabila mentakrifkan kaedah penetap ialah menentukan pengecualian yang sesuai untuk melontar apabila parameter null diterima. Kedua-dua IllegalArgumentException (IAE) dan NullPointerException (NPE) nampaknya terpakai berdasarkan dokumentasi Java.

IAE lwn. NPE: The Difference

NPE biasanya dilemparkan mengikut masa jalan apabila null digunakan secara tidak wajar. Sebaliknya, IAE direka bentuk secara nyata untuk menunjukkan bahawa hujah yang menyalahi undang-undang atau tidak sesuai telah diserahkan kepada kaedah.

Sebab Penggunaan IAE

Untuk parameter nol dalam kaedah penetap, IAE adalah lebih baik daripada NPE atas beberapa sebab:

  • Ditujukan Tujuan: IAE direka secara eksplisit untuk pengesahan parameter, menjadikannya pilihan semula jadi dalam senario ini.
  • Kejelasan: NPE dalam surih tindanan mencadangkan penolakan nol, manakala IAE menunjukkan parameter haram, yang merupakan punca sebenar dalam hal ini kes.
  • Ketekalan: Semua jenis data parameter tidak sah yang lain biasanya membuang IAE, memastikan pengendalian yang konsisten.
  • Fleksibiliti: Mesej pengecualian tersuai boleh berkomunikasi butiran khusus tentang ralat, menghapuskan keperluan untuk NPE berasingan pengendalian.

Penggunaan API dan Perbalahan Balas

Walaupun sesetengah bahagian API Java menggunakan NPE untuk hujah nol, pendekatan yang tidak konsisten ini tidak sepatutnya membenarkan penggunaan NPE berbanding IAE dalam konteks khusus ini. Sebab yang digariskan di atas sangat menyokong penggunaan IAE untuk parameter null haram dalam kaedah penetap.

Atas ialah kandungan terperinci IllegalArgumentException atau NullPointerException: Pengecualian yang manakah untuk Dilemparkan untuk Parameter Penetap Null?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn