Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Làm chủ Try-Catch xử lý lỗi trong C: Hướng dẫn thực hành

Làm chủ Try-Catch xử lý lỗi trong C: Hướng dẫn thực hành

Từ khóa "try" và "catch" mô tả cách xử lý khi chương trình gặp ngoại lệ do lỗi code hoặc dữ liệu. Nhiều ngôn ngữ (Python, C++, JavaScript) hỗ trợ try-catch tích hợp. C không hỗ trợ xử lý ngoại lệ và không có cơ chế built-in. Tuy nhiên, có thể mô phỏng bằng setjmp và longjmp (header setjmp.h).

setjmp nhận biến kiểu jmp_buf, trả về 0 khi gọi trực tiếp. Khi longjmp được gọi với cùng jmp_buf và giá trị thứ hai, setjmp trả về giá trị đó.

Mô phỏng Try-Catch bằng Macro

#include <stdio.h>
#include <setjmp.h>

#define TRY do { jmp_buf buf_state; if (!setjmp(buf_state)) {
#define CATCH } else {
#define ENDTRY }} while(0)
#define THROW longjmp(buf_state, 1)

int main() {
    TRY {
        printf("Try statement testing\n");
        THROW;
        printf("Statement should not appear, as the THROW block has already thrown the exception \n");
    }
    CATCH {
        printf("Got Exception \n");
    }
    ENDTRY;
    return 0;
}

Trong đó ENDTRY đóng khối do-while.

Làm chủ Try-Catch xử lý lỗi trong C: Hướng dẫn thực hành

Kết luận

C không có try-catch built-in. Hướng dẫn này trình bày phương pháp mô phỏng bằng setjmp/longjmp và macro để xử lý ngoại lệ trong C.

Tác giả

Làm chủ Try-Catch xử lý lỗi trong C: Hướng dẫn thực hành

Komal Batool Batool

Đam mê nghiên cứu công nghệ, tập trung viết về ngôn ngữ lập trình và khoa học máy tính.