İyi bir programcı olarak, programın her sonucuna cevap verecek sağlam kodlar yazılmalıdır. Ancak, C kütüphanesindeki hemen hemen tüm fonksiyonlar bir hata olduğunda 0 veya -1 veya NULL döndürür.
Örneğin, bir dosyayı açmaya çalıştığınızda hata kontrolünün gerekli olduğu açıktır. Ama sık sık hata gibi fonksiyonları kontrol görmezden printf
hatta malloc
ben gerekli hissetmiyorum çünkü.
if(fprintf(stderr, "%s", errMsg) < 0){
perror("An error occurred while displaying the previous error.");
exit(1);
}
Sadece belirli hataları yoksaymak iyi bir uygulama mıdır yoksa tüm hataları ele almanın daha iyi bir yolu var mı?
try
ifade içeren yöntemler de dahil olmak üzere birçok kod satırındaki birçok hatayı kapatabilirsiniz , böylece her bir çağrıyı veya işlemi kontrol etmeniz gerekmez. (Ayrıca bazı diller aut boş dereference veya dizi indeksi gibi basit hataları algılama konusunda diğerlerinden daha iyi olduğunu unutmayın.)
errno
! Aşina olmadığınız durumlarda, “C kütüphanesindeki hemen hemen tüm işlevler 0 veya −1 döndürür veya NULL
bir hata olduğunda” olduğu doğru olsa daerrno
, kullanarak #include <errno.h>
ve sonra okuyarak erişebileceğiniz genel değişkeni de belirlerler. değeri errno
. Bu nedenle, örneğin, open
(2) dönerse -1
, errno == EACCES
bunun hangi izin hatasını göstereceğini veya ENOENT
hangi dosyanın mevcut olmadığını gösterip göstermeyeceğini kontrol etmek isteyebilirsiniz .
try
/ catch
atlar ile simüle rağmen.