0Pricing
C Academy · บทเรียน

การจัดการข้อยกเว้นใน C

นำกลยุทธ์จัดการข้อผิดพลาดที่รัดกุมมาใช้โดยไม่มีการจัดการข้อยกเว้นในตัว

การจัดการข้อยกเว้นใน C เป็นบทเรียน C Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 3 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C Academy มีบทเรียนทั้งหมด 3 บทเรียน

บทนำสู่การจัดการข้อยกเว้น

การจัดการข้อยกเว้นในภาษา C

ต่างจากภาษาอย่าง C++ และ Java ภาษา C ไม่มีการจัดการข้อยกเว้นในตัว

ในบทเรียนนี้ คุณจะได้เรียนรู้:

  • วิธีจัดการข้อผิดพลาดโดยใช้ค่าที่ส่งกลับ
  • วิธีใช้ setjmp และ longjmp เพื่อจัดการข้อยกเว้น
  • วิธีใช้ errno เพื่อจัดการข้อผิดพลาดของระบบ
การจัดการข้อยกเว้นใน C — ภาพประกอบ 1

การจัดการข้อผิดพลาดด้วยค่าที่ส่งกลับ

การจัดการข้อผิดพลาดด้วยค่าที่ส่งกลับ

วิธีที่ง่ายที่สุดในการจัดการข้อผิดพลาดในภาษา C คือการใช้ค่าที่ส่งกลับ

ตัวอย่าง:

int divide(int a, int b) { if (b == 0) return -1; // Error code return a / b; }

ผู้เรียกจะตรวจสอบค่าที่ส่งกลับเพื่อค้นหาข้อผิดพลาด

ตัวอย่าง: การจัดการข้อผิดพลาดด้วยค่าที่ส่งกลับ

ตัวอย่าง: การจัดการข้อผิดพลาดด้วยค่าที่ส่งกลับ

โปรแกรมนี้ตรวจสอบการหารด้วยศูนย์โดยใช้ค่าที่ส่งกลับ

#include <stdio.h>

int divide(int a, int b) {
    if (b == 0) {
        printf("Error: Division by zero!\n");
        return -1;
    }
    return a / b;
}

int main() {
    int result = divide(10, 0);
    if (result != -1) {
        printf("Result: %d\n", result);
    }
    return 0;
}

การใช้ setjmp และ longjmp เพื่อจัดการข้อผิดพลาด

การใช้ setjmp และ longjmp เพื่อจัดการข้อผิดพลาด

ฟังก์ชัน setjmp และ longjmp อนุญาตให้กระโดดข้ามขอบเขตของฟังก์ชัน ซึ่งจำลองการจัดการข้อยกเว้น

ขั้นตอน:

  • ใช้ setjmp() เพื่อทำเครื่องหมายจุดกู้คืน
  • ใช้ longjmp() เพื่อกระโดดกลับเมื่อเกิดข้อผิดพลาด

ตัวอย่าง: การใช้ setjmp และ longjmp

ตัวอย่าง: การใช้ setjmp และ longjmp

โปรแกรมนี้ใช้ setjmp และ longjmp เพื่อจัดการข้อผิดพลาด

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

jmp_buf buffer;

void errorHandler() {
    printf("Error occurred! Jumping back to safe state.\n");
    longjmp(buffer, 1);
}

int main() {
    if (setjmp(buffer) == 0) {
        printf("Executing main program...\n");
        errorHandler();
    } else {
        printf("Recovered from error.\n");
    }
    return 0;
}

การใช้ errno สำหรับข้อผิดพลาดของระบบ

การใช้ errno สำหรับข้อผิดพลาดของระบบ

ตัวแปร errno จัดเก็บรหัสข้อผิดพลาดจากการเรียกใช้ระบบ

ตัวอย่าง:

#include

ฟังก์ชันอย่าง fopen() จะกำหนดค่าให้ errno เมื่อเกิดข้อผิดพลาด

ตัวอย่าง: การใช้ errno สำหรับการจัดการไฟล์

ตัวอย่าง: การใช้ errno สำหรับการจัดการไฟล์

โปรแกรมนี้ตรวจสอบ errno เมื่อเปิดไฟล์ที่ไม่มีอยู่

#include <stdio.h>
#include <errno.h>

int main() {
    FILE *file = fopen("nonexistent.txt", "r");
    if (!file) {
        perror("Error opening file");
    }
    return 0;
}

แนวทางปฏิบัติที่ดีในการจัดการข้อผิดพลาด

แนวทางปฏิบัติที่ดีในการจัดการข้อผิดพลาด

หากต้องการจัดการข้อผิดพลาดอย่างมีประสิทธิภาพ:

  • ตรวจสอบค่าที่ส่งกลับจากฟังก์ชัน
  • ใช้ errno สำหรับข้อผิดพลาดของระบบ
  • ใช้ setjmp และ longjmp เฉพาะเมื่อจำเป็น

สรุป

สรุป

ในบทเรียนนี้ คุณได้เรียนรู้:

  • วิธีจัดการข้อผิดพลาดโดยใช้ค่าที่ส่งกลับ
  • วิธีที่ setjmp และ longjmp จำลองการจัดการข้อยกเว้น
  • วิธีใช้ errno เพื่อตรวจจับข้อผิดพลาดของระบบ

จบหัวข้อการดีบักและการจัดการข้อผิดพลาดในภาษา C แล้ว

การจัดการข้อยกเว้นใน C — ภาพประกอบ 10

คำถามที่พบบ่อย

บทเรียน “การจัดการข้อยกเว้นใน C” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การจัดการข้อยกเว้นใน C” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C Academy มีบทเรียนทั้งหมด 3 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การจัดการข้อยกเว้นใน C”

นำกลยุทธ์จัดการข้อผิดพลาดที่รัดกุมมาใช้โดยไม่มีการจัดการข้อยกเว้นในตัว คุณปฏิบัติ C Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน C Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 3 บทเรียน

บทเรียน “การจัดการข้อยกเว้นใน C” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน C Academy นี้ได้ไหม

ได้ บทเรียน C Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การแก้ไขข้อบกพร่องด้วย GDB
  2. ข้อผิดพลาดขณะทำงานที่พบบ่อย
  3. การจัดการข้อยกเว้นใน C
← กลับไปที่ C Academy