Mengembalikan NULL (atau angka nol, atau boolean false) untuk memberi sinyal kesalahan adalah salah secara teknis dan konseptual.
Secara teknis, Anda membebani pemrogram dengan memeriksa nilai kembali segera , pada titik yang tepat di mana ia dikembalikan. Jika Anda membuka dua puluh file berturut-turut, dan pensinyalan kesalahan dilakukan dengan mengembalikan NULL, maka kode yang dikonsumsi harus memeriksa setiap file yang dibaca secara individual, dan keluar dari setiap loop dan konstruksi yang serupa. Ini adalah resep yang sempurna untuk kode yang berantakan. Namun, jika Anda memilih untuk memberi sinyal kesalahan dengan melemparkan pengecualian, kode yang dikonsumsi dapat memilih untuk menangani pengecualian dengan segera, atau membiarkannya naik ke level sebanyak yang sesuai, bahkan di seluruh panggilan fungsi. Ini membuat kode lebih bersih.
Secara konseptual, jika Anda membuka file dan ada yang tidak beres, maka mengembalikan nilai (bahkan NULL) salah. Anda tidak memiliki apa pun untuk dikembalikan, karena operasi Anda tidak selesai. Mengembalikan NULL adalah padanan konseptual dari "Saya telah berhasil membaca file, dan inilah yang dikandungnya - tidak ada". Jika itu yang ingin Anda ungkapkan (yaitu, jika NULL masuk akal sebagai hasil aktual untuk operasi yang dimaksud), maka tentu saja kembalikan NULL, tetapi jika Anda ingin memberi sinyal kesalahan, gunakan pengecualian.
Secara historis, kesalahan dilaporkan dengan cara ini karena bahasa pemrograman seperti C tidak memiliki penanganan perkecualian yang dibangun ke dalam bahasa tersebut, dan cara yang disarankan (menggunakan lompat jauh) agak berbulu dan agak kontra-intuitif.
Ada juga sisi pemeliharaan untuk masalah ini: dengan pengecualian, Anda harus menulis kode tambahan untuk menangani kegagalan; jika tidak, program akan gagal lebih awal dan sulit (mana yang baik). Jika Anda mengembalikan NULL ke sinyal kesalahan, perilaku default untuk program ini adalah mengabaikan kesalahan dan melanjutkannya, sampai mengarah ke masalah lain di jalan - data rusak, segfaults, NullReferenceExceptions, tergantung pada bahasanya. Untuk memberi sinyal kesalahan awal dan keras, Anda harus menulis kode tambahan, dan coba tebak: itulah bagian yang ditinggalkan ketika Anda berada di tenggat waktu yang ketat.