Saya menggunakan pengecualian untuk menangkap masalah lebih awal. Sebagai contoh:
public int getAverageAge(Person p1, Person p2){
if(p1 == null || p2 == null)
throw new IllegalArgumentException("One or more of input persons is null").
return (p1.getAge() + p2.getAge()) / 2;
}
Program saya seharusnya tidak pernah lulus null
dalam fungsi ini. Saya tidak pernah menginginkannya. Namun seperti yang kita semua tahu, hal-hal yang tidak diinginkan terjadi dalam pemrograman.
Melontarkan pengecualian jika masalah ini terjadi, memungkinkan saya mengenali dan memperbaikinya, sebelum menyebabkan lebih banyak masalah di tempat lain dalam program. Pengecualian menghentikan program dan memberi tahu saya "hal-hal buruk terjadi di sini, perbaiki". Alih-alih ini null
bergerak di sekitar program yang menyebabkan masalah di tempat lain.
Sekarang, Anda benar, dalam hal ini null
hanya akan menyebabkan NullPointerException
langsung, jadi itu mungkin bukan contoh terbaik.
Tetapi pertimbangkan metode seperti ini misalnya:
public void registerPerson(Person person){
persons.add(person);
notifyRegisterObservers(person); // sends the person object to all kinds of objects.
}
Dalam hal ini, a null
sebagai parameter akan dilewatkan di sekitar program, dan mungkin menyebabkan kesalahan jauh di kemudian hari, yang akan sulit dilacak kembali ke asalnya.
Mengubah fungsi seperti ini:
public void registerPerson(Person person){
if(person == null) throw new IllegalArgumentException("Input person is null.");
persons.add(person);
notifyRegisterObservers(person); // sends the person object to all kinds of objects.
}
Memungkinkan saya untuk menemukan masalah jauh sebelum menyebabkan kesalahan aneh di tempat lain.
Juga, null
referensi sebagai parameter hanyalah sebuah contoh. Bisa jadi ada banyak jenis masalah, dari argumen yang tidak valid hingga yang lainnya. Itu selalu lebih baik untuk menemukan mereka lebih awal.
Jadi pertanyaan saya sederhana: apakah ini praktik yang baik? Apakah saya menggunakan pengecualian sebagai alat pencegah masalah baik? Apakah ini aplikasi pengecualian yang sah atau bermasalah?