İ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 printfhatta mallocben 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ı?
tryifade 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 NULLbir 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 == EACCESbunun hangi izin hatasını göstereceğini veya ENOENThangi dosyanın mevcut olmadığını gösterip göstermeyeceğini kontrol etmek isteyebilirsiniz .
try/ catchatlar ile simüle rağmen.