Là một lập trình viên giỏi, người ta nên viết các mã mạnh mẽ sẽ xử lý mọi kết quả duy nhất của chương trình của mình. Tuy nhiên, gần như tất cả các chức năng từ thư viện C sẽ trả về 0 hoặc -1 hoặc NULL khi có lỗi.
Đôi khi rõ ràng là kiểm tra lỗi là cần thiết, ví dụ như khi bạn cố mở một tệp. Nhưng tôi thường bỏ qua việc kiểm tra lỗi trong các chức năng như printf
hoặc thậm chí malloc
vì tôi không cảm thấy cần thiết.
if(fprintf(stderr, "%s", errMsg) < 0){
perror("An error occurred while displaying the previous error.");
exit(1);
}
Có phải là một thực hành tốt để chỉ bỏ qua một số lỗi nhất định, hoặc có cách nào tốt hơn để xử lý tất cả các lỗi?
try
câu lệnh, do đó bạn không phải kiểm tra từng cuộc gọi hoặc thao tác. (Cũng lưu ý rằng một số ngôn ngữ tốt hơn các ngôn ngữ khác trong việc phát hiện các lỗi đơn giản như vô hiệu hóa hoặc chỉ số mảng ngoài giới hạn.)
errno
! Trong trường hợp bạn không quen, trong khi sự thật là "gần như tất cả các chức năng từ thư viện C sẽ trả về 0 hoặc or1 hoặc NULL
khi có lỗi", họ cũng đặt errno
biến toàn cục mà bạn có thể truy cập bằng cách sử dụng #include <errno.h>
và sau đó chỉ cần đọc giá trị của errno
. Vì vậy, ví dụ, nếu open
(2) trả về -1
, bạn có thể muốn kiểm tra xem errno == EACCES
, điều đó có cho biết lỗi quyền hay không ENOENT
, điều đó cho thấy rằng tệp được yêu cầu không tồn tại.
try
/ catch
, mặc dù bạn có thể mô phỏng nó bằng các bước nhảy.