http://vietjack.com/lap_trinh_c/index.jsp Copyright © vietjack.com Xử lý lỗi C Các ngôn ngữ lập trình ngơn ngữ C khơng cung cấp trực tiếp hỗ trợ việc xử lý lỗi ngơn ngữ chương trình hệ thống, cung cấp mức thấp dạng giá trị trả Hầu hết hàm C hàm Unix trả giá trị null trường hợp lỗi thiết lập mã lỗi errno cho biến tồn cục dẫn có lỗi xảy q trình gọi hàm Bạn tìm thấy nhiều mã lỗi khác Header file có tên Vì lập trình viên C kiểm tra giá trị trả thực hành động xác dựa vào giá trị trả Trong thực tế, lập trình viên nên thiết lập giá trị errno thời điểm khởi tạo chương trình Một giá trị thể khơng có lỗi chương trình Hàm perror() strerror() thơng báo lỗi errno C Ngơn ngữ chương trình C cung cấp hàm perror() strerror() sử dụng để hiển thị thông báo lỗi errno • Hàm perror() hiển thị chuỗi mà bạn truyền cho nó, theo sau dấu hai chấm, khoẳng trắng sau đoạn văn mơ tả giá trị lỗi • Hàm strerror() trả trỏ đến đoạn văn biểu diễn giá trị lỗi Cùng thử mô điều kiện lỗi thử mở file không tồn Tại sử dụng hai hàm để cách sử dụng, bạn sử dụng nhiều cách để in giá trị lỗi bạn Điểm quan trọng thứ cần ghi nhớ bạn nên sử dụng stderr để đưa tất lỗi #include #include /* header file de su dung cac ham va hang can thiet*/ #include extern int errno ; int main () { FILE * pf; int errnum; pf = fopen ("unexist.txt", "rb"); if (pf == NULL) { errnum = errno; fprintf(stderr, "Gia tri cua errno la: %d\n", errno); perror("Error duoc in boi ham perror"); fprintf(stderr, "Loi xuat hien mo file: %s\n", strerror( errnum )); } else { fclose (pf); } printf("\n===========================\n"); printf("VietJack chuc cac ban hoc tot! \n"); return 0; } Biên dịch thực thi chương trình C cho kết sau: http://vietjack.com/ Trang chia sẻ các bài học online miễn phí http://vietjack.com/lap_trinh_c/index.jsp Copyright © vietjack.com Lỗi chia cho số C Đây lỗi phổ biến trình chia, lập trình viên không kiểm tra điều kiện số bị chia số gặp lỗi q trình thực Đoạn code bên sửa lỗi việc kiểm tra điều kiện số bị chia số trước chia: #include #include main() { int sochia = 15; int sobichia = 0; int thuong; if( sobichia == 0){ fprintf(stderr, "Ban dang thuc hien phep chia cho so 0!!! Ket thuc chuong trinh \n"); exit(-1); } thuong = sochia / sobichia; fprintf(stderr, "Gia tri cua thuong la : %d\n", thuong ); printf("\n===========================\n"); printf("VietJack chuc cac ban hoc tot! \n"); exit(0); } Biên dịch thực thi chương trình C cho kết sau: Trạng thái chương trình C Trong thực tế để chương trình với giá trị EXIT_SUCCESS trường hợp chương trình sau hoạt động thành công Ở EXIT_SUCCESS macro định nghĩa giá trị Nếu bạn có điều kiện lỗi chương trình bạn, bạn nên với trạng thái trả EXIT_FAILURE định nghĩa có giá trị -1 Bây viết chương trình sau: #include #include main() { int sochia = 36; int sobichia = 6; int thuong; if( sobichia == 0){ fprintf(stderr, "Ban dang thuc hien phep chia cho so 0!!! Ket thuc chuong trinh \n"); exit(EXIT_FAILURE); } thuong = sochia / sobichia; fprintf(stderr, "Gia tri cua thuong la: %d\n", thuong ); printf("\n===========================\n"); printf("VietJack chuc cac ban hoc tot! \n"); exit(EXIT_SUCCESS); } http://vietjack.com/ Trang chia sẻ các bài học online miễn phí http://vietjack.com/lap_trinh_c/index.jsp Copyright © vietjack.com Biên dịch thực thi chương trình C cho kết sau: http://vietjack.com/ Trang chia sẻ các bài học online miễn phí ... th c thi chương trình C cho kết sau: Trạng thái thoát chương trình C Trong th c tế để chương trình với giá trị EXIT_SUCCESS trường hợp chương trình sau hoạt động thành c ng Ở EXIT_SUCCESS macro định... số C Đây lỗi phổ biến trình chia, lập trình viên khơng kiểm tra điều kiện số bị chia số gặp lỗi trình th c Đoạn code bên sửa lỗi vi c kiểm tra điều kiện số bị chia số trư c chia: #include ... sochia / sobichia; fprintf(stderr, "Gia tri cua thuong la : %d ", thuong ); printf(" =========================== "); printf("VietJack chuc cac ban hoc tot! "); exit(0); } Biên dịch thực