Sebagai seorang programmer yang baik, seseorang harus menulis kode yang kuat yang akan menangani setiap hasil dari programnya. Namun, hampir semua fungsi dari pustaka C akan mengembalikan 0 atau -1 atau NULL ketika ada kesalahan.
Terkadang jelas bahwa pengecekan kesalahan diperlukan, misalnya ketika Anda mencoba membuka file. Tetapi saya sering mengabaikan kesalahan memeriksa fungsi seperti printf
atau bahkan malloc
karena saya merasa tidak perlu.
if(fprintf(stderr, "%s", errMsg) < 0){
perror("An error occurred while displaying the previous error.");
exit(1);
}
Apakah praktik yang baik untuk mengabaikan kesalahan tertentu, atau apakah ada cara yang lebih baik untuk menangani semua kesalahan?
try
pernyataan, sehingga Anda tidak perlu memeriksa setiap panggilan atau operasi. (Perhatikan juga bahwa beberapa bahasa lebih baik daripada yang lain dalam mendeteksi kesalahan sederhana seperti null dereference atau array index di luar batas.)
errno
! Jika Anda tidak terbiasa, sementara itu benar bahwa "hampir semua fungsi dari pustaka C akan mengembalikan 0 atau −1 atau NULL
ketika ada kesalahan," mereka juga mengatur errno
variabel global , yang dapat Anda akses dengan menggunakan #include <errno.h>
dan kemudian hanya membaca nilai dari errno
. Jadi, misalnya, jika open
(2) kembali -1
, Anda mungkin ingin memeriksa apakah errno == EACCES
, yang akan menunjukkan kesalahan izin, atau ENOENT
, yang akan menunjukkan bahwa file yang diminta tidak ada.
try
/ catch
, meskipun Anda bisa mensimulasikannya dengan lompatan.