Các từ “thử” và “bắt” mô tả những việc cần làm khi chương trình gặp phải ngoại lệ do vấn đề về mã hoặc dữ liệu. Các ngoại lệ được xử lý trong thử khối mã. Khối bắt được sử dụng để tìm và xử lý các ngoại lệ từ khối thử. Nhiều ngôn ngữ lập trình, bao gồm Python, C++ và JavaScript, bao gồm try-catch tuyên bố.
Bài viết này trình bày câu lệnh try-catch là gì và cách nó được triển khai bằng một ví dụ trong lập trình C.
Tuyên bố thử bắt là gì?
thử câu lệnh xác định một tập hợp các câu lệnh có thể tạo ra một ngoại lệ. Khi một loại ngoại lệ cụ thể xảy ra, khối bắt là nơi ngoại lệ được gửi. Trình biên dịch sẽ đưa ra thông báo lỗi hoặc ngoại lệ sẽ tiếp tục di chuyển lên ngăn xếp cuộc gọi cho đến khi nó được xử lý nếu khối try/catch không xử lý được.
Cú pháp chung của try-catch tuyên bố được đưa ra là:
thử {
/*
Chèn một số mã có thể sẽ tạo ra lỗi
*/
}
bắt {
/*
Viết mã để xử lý các lỗi được tạo ra.
*/
Câu lệnh try-catch trong C là gì?
C không hỗ trợ xử lý ngoại lệ và không có cơ chế tích hợp để thực hiện việc đó. Tuy nhiên, bạn có thể mô phỏng điều này ở một mức độ nào đó bằng cách sử dụng setjmp và longjmp cuộc gọi. Nếu không có cách giải phóng bộ nhớ khi ngăn xếp đã được truy cập, các cơ chế xử lý ngoại lệ sẽ không hiệu quả và không an toàn, đồng thời C không có trình thu gom rác. Để giải phóng RAM, chúng tôi có thể cũng cần tích hợp trình quản lý bối cảnh.
Bây giờ, khi chúng tôi cải tiến mã, chúng tôi sẽ dần dần xây dựng giải pháp. Longjmp và setjmp, là hai hàm C có thể được cung cấp bởi tệp tiêu đề setjmp.h sẽ được chúng tôi sử dụng. Hàm setjmp chấp nhận các biến kiểu jmp_buf và trả về 0 khi được gọi trực tiếp. Khi sử dụng cùng một biến jmp_buf để gọi longjmp với hai biến, hàm setjmp trả về một giá trị khớp với giá trị của đối số thứ hai của longjmp.
Một ví dụ về cách triển khai ở trên được đưa ra là:
#include
#include
#define THỬ làm { jmp_buf buf_state; nếu ( !setjmp(buf_state)) {
#define CATCH } else {
#define ENDTRY }} while(0)
#define THROW longjmp(buf_state, 1)
int chính()
{
THỬ {
printf("Thử kiểm tra câu lệnh\n");
Ném;
printf("Câu lệnh sẽ không xuất hiện vì khối THROW đã đưa ra ngoại lệ \n");
}
BẮT {
printf("Có ngoại lệ\n");
}
KẾT THÚC;
trả về 0;
Trong chương trình C ở trên, ENDTRY hàm được sử dụng để cung cấp phần đóng của khối do-while.

Kết luận
Nếu chương trình gặp ngoại lệ do lỗi dữ liệu hoặc mã hóa khi đang chạy, hãy “thử ” và “bắt ” mô tả cách quản lý nó. Trong một thử khối mã, ngoại lệ xảy ra khi bắt khối là nơi xảy ra lỗi từ thử các khối được tìm thấy và xử lý. Nhiều ngôn ngữ lập trình hỗ trợ tính năng try-catch chặn nhưng C thì không. Hướng dẫn này mô tả phương pháp sử dụng câu lệnh try-catch trong lập trình C.
Giới thiệu về tác giả
Komal Batool Batool
Tôi đam mê nghiên cứu công nghệ và ý tưởng mới và điều đó đã đưa tôi đến đây để viết cho LinuxHint. Trọng tâm chính của tôi là viết về ngôn ngữ lập trình và các chủ đề liên quan đến khoa học máy tính.