Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

การเรียนรู้การจัดการข้อผิดพลาด Try-Catch ใน C:คู่มือปฏิบัติ

การเรียนรู้การจัดการข้อผิดพลาด Try-Catch ใน C:คู่มือปฏิบัติ

คำว่า "ลอง" และ "จับ" อธิบายถึงสิ่งที่ต้องทำเมื่อโปรแกรมพบข้อยกเว้นเนื่องจากปัญหาโค้ดหรือข้อมูล ข้อยกเว้นได้รับการจัดการโดยลอง บล็อกของรหัส Catch Block ถูกใช้เพื่อค้นหาและจัดการกับข้อยกเว้นจากการลองบล็อก ภาษาการเขียนโปรแกรมหลายภาษา รวมถึง Python, C++ และ JavaScript รวมถึง try-catch คำสั่ง

บทความนี้จะแสดงให้เห็นว่าคำสั่ง try-catch คืออะไร และวิธีการนำไปใช้โดยใช้ตัวอย่างในการเขียนโปรแกรม C

คำสั่ง Try Catch คืออะไร

ความพยายาม คำสั่งกำหนดชุดของคำสั่งที่อาจสร้างข้อยกเว้น เมื่อมีข้อยกเว้นชนิดใดชนิดหนึ่งเกิดขึ้น catch block คือตำแหน่งที่ข้อยกเว้นถูกส่งไป คอมไพลเลอร์จะส่งออกการแจ้งเตือนข้อผิดพลาดหรือข้อยกเว้นจะยังคงเดินทางต่อไปใน call stack จนกว่าจะได้รับการแก้ไขหากบล็อก try/catch ไม่สามารถจัดการได้

ไวยากรณ์ทั่วไปของ try-catch คำสั่งได้รับเป็น:

ลอง {
    /*
    ใส่โค้ดที่อาจสร้างข้อผิดพลาด
    */
}
จับ {
    /*
    เขียนโค้ดสำหรับจัดการกับข้อผิดพลาดที่สร้างขึ้น
    */

คำสั่ง try-catch ในภาษา C คืออะไร

C ไม่รองรับการจัดการข้อยกเว้น และไม่มีกลไกในตัวให้ทำเช่นนั้น อย่างไรก็ตาม คุณสามารถจำลองสิ่งนี้ได้ในระดับหนึ่งโดยใช้ setjmp และ longjmp โทร หากไม่มีวิธีในการปล่อยหน่วยความจำเมื่อมีการเยี่ยมชมสแต็ก กลไกการจัดการข้อยกเว้นจะไม่มีประสิทธิภาพและไม่ปลอดภัย และ C ไม่มีตัวรวบรวมขยะ หากต้องการเพิ่ม RAM เราอาจจำเป็นต้องรวมตัวจัดการบริบทด้วย

ตอนนี้ ขณะที่เราทำการปรับปรุงโค้ด เราจะค่อยๆ สร้างโซลูชัน longjmp และ setjmp คือฟังก์ชัน C สองฟังก์ชันที่ไฟล์ส่วนหัว setjmp.h สามารถนำมาใช้ได้ ฟังก์ชัน setjmp ยอมรับตัวแปรประเภท jmp_buf และส่งกลับ 0 เมื่อถูกเรียกโดยตรง เมื่อใช้ตัวแปร jmp_buf เดียวกันเพื่อเรียกใช้ longjmp ด้วยตัวแปรสองตัว ฟังก์ชัน setjmp จะส่งกลับค่าที่ตรงกับค่าของอาร์กิวเมนต์ที่สองของ longjmp

ตัวอย่างของการดำเนินการข้างต้นได้รับเป็น:

#รวม
#รวม
#define ลองทำ { jmp_buf buf_state; ถ้า ( !setjmp(buf_state)) {
#define CATCH } อื่น ๆ {
#define ENDTRY }} ในขณะที่ (0)
#define โยน longjmp (buf_state, 1)
int หลัก()
{
    ลอง {
        printf("ลองทดสอบคำสั่ง\n");
        โยน;
        printf("คำสั่งไม่ควรปรากฏขึ้น เนื่องจากบล็อก THROW ได้ส่งข้อยกเว้นไปแล้ว \n");
    }
    จับ {
        printf("มีข้อยกเว้น \n");
    }
    ENDTRY;
    กลับ 0;

ในโปรแกรม C ข้างต้น ENDTRY ฟังก์ชันใช้สำหรับจัดเตรียมส่วนปิดของบล็อก do- While

การเรียนรู้การจัดการข้อผิดพลาด Try-Catch ใน C:คู่มือปฏิบัติ

บทสรุป

หากโปรแกรมพบข้อยกเว้นเนื่องจากข้อมูลหรือข้อผิดพลาดในการเขียนโค้ดในขณะที่กำลังทำงานอยู่ “ลอง ” และ “จับ ” อธิบายวิธีจัดการมัน ใน ลอง บล็อกของโค้ด มีข้อยกเว้นเกิดขึ้นในขณะที่ จับ บล็อกคือจุดที่ข้อผิดพลาดจาก ลอง พบบล็อกและจัดการ ภาษาการเขียนโปรแกรมหลายภาษารองรับ try-catch บล็อกแต่ C ไม่ได้ คู่มือนี้อธิบายวิธีการใช้คำสั่ง try-catch ในการเขียนโปรแกรม C

เกี่ยวกับผู้เขียน

การเรียนรู้การจัดการข้อผิดพลาด Try-Catch ใน C:คู่มือปฏิบัติ

โกมาล บาทูล บาทูล

ฉันหลงใหลในการค้นคว้าเทคโนโลยีและแนวคิดใหม่ๆ และนั่นทำให้ฉันมาที่นี่เพื่อเขียนบทความให้กับ LinuxHint เป้าหมายหลักของฉันคือการเขียนเกี่ยวกับภาษาการเขียนโปรแกรมและหัวข้อที่เกี่ยวข้องกับวิทยาการคอมพิวเตอร์