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

ชุดข้อผิดพลาดและยูเนียน !T

จัดการข้อผิดพลาดในฐานะค่าชั้นหนึ่ง

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

ข้อผิดพลาดคือค่า

ใน Zig ไม่มีข้อยกเว้น ข้อผิดพลาดเป็นเพียงค่าปกติที่ฟังก์ชันส่งคืนได้ ทำให้ความล้มเหลวปรากฏให้เห็นในโค้ด

ประกาศชุดข้อผิดพลาด

ชุดข้อผิดพลาดคือกลุ่มข้อผิดพลาดที่เป็นไปได้และมีชื่อ คุณแสดงรายการรูปแบบต่าง ๆ คล้ายกับ enum ที่รวบรวมสิ่งที่อาจผิดพลาด

const FileError = error{
    NotFound,
    PermissionDenied,
};

อ้างถึงข้อผิดพลาดหนึ่งรายการ

เข้าถึงสมาชิกแต่ละตัวของชุดข้อผิดพลาดด้วยจุด ค่า FileError.NotFound คือข้อผิดพลาดรูปธรรมหนึ่งรายการที่คุณส่งคืนได้

return FileError.NotFound;

ชุดข้อผิดพลาดไม่มีชื่อ

คุณไม่จำเป็นต้องตั้งชื่อเสมอไป การเขียน error{Empty} แบบแทรกจะสร้างชุดข้อผิดพลาดขนาดเล็กที่ใช้เพียงครั้งเดียวตรงจุดใช้งาน

return error.Empty;

เครื่องหมาย Bang หมายถึงอาจมีข้อผิดพลาด

เครื่องหมาย ! ในชนิดข้อมูลจะสร้างยูเนียนข้อผิดพลาด ชนิดข้อมูลที่อยู่ก่อนเครื่องหมายคือค่าสำเร็จ และอาจมีข้อผิดพลาดมาแทนที่

FileError!u32

อ่าน !T ออกเสียง

คุณอ่าน !u32 ได้ว่าเป็น u32 หรือข้อผิดพลาด ค่าหนึ่งค่านี้เก็บผลลัพธ์ได้ทั้งสองแบบ ดังนั้นผู้เรียกต้องเลือกจัดการแบบใดแบบหนึ่ง

สองด้านของยูเนียน

ยูเนียนข้อผิดพลาดมีรูปแบบขณะทำงานได้เพียงสองแบบ: ข้อมูลบรรจุที่ถูกต้องชนิด T หรือข้อผิดพลาดรายการหนึ่งจากชุดนั้น จะเป็นทั้งสองแบบพร้อมกันไม่ได้

กำหนดชุดก่อนเครื่องหมาย Bang

วางชุดข้อผิดพลาดไว้ด้านซ้ายของ ! เพื่อระบุให้ชัดเจนว่าข้อผิดพลาดใดบ้างที่อนุญาต ซึ่งทำให้สัญญาการทำงานบันทึกความล้มเหลวไว้ในชนิดข้อมูลโดยตรง

fn parse(s: []const u8) FileError!u32 {
    // ...
}

รวมชุดข้อผิดพลาด

ตัวดำเนินการ || ที่ใช้กับชุดข้อผิดพลาดสองชุดจะรวมทั้งสองชุดเป็นชุดเดียว ทำให้ฟังก์ชันรองรับข้อผิดพลาดจากหลายแหล่งพร้อมกันได้

const AllError = FileError || NetError;

anyerror คือชุดครอบคลุม

anyerror ที่มีมาในระบบประกอบด้วยข้อผิดพลาดที่เป็นไปได้ทั้งหมด สะดวกแต่ทำให้ความแม่นยำของชุดที่มีชื่อหายไป จึงควรใช้เท่าที่จำเป็น

fn risky() anyerror!void {}

เหตุใดชุดจึงมีประโยชน์

เนื่องจากข้อผิดพลาดอยู่ในชนิดข้อมูล คอมไพเลอร์จึงรู้ถึงความล้มเหลวทุกแบบที่ฟังก์ชันอาจสร้างขึ้น ไม่มีสิ่งใดหลุดรอดไปโดยที่คุณ ไม่ได้จัดการ

ตรวจสอบอย่างรวดเร็ว

คุณเห็นชนิดข้อมูล FileError!u32 ในฟังก์ชัน ชนิดข้อมูลนี้อธิบายอะไร

สรุปทบทวน

คุณได้รู้จักชุดข้อผิดพลาด ยูเนียน !T การรวมชุดด้วย || และ anyerror ข้อผิดพลาดเป็นค่าปกติที่ระบบชนิดข้อมูลติดตามให้คุณ ✅

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

บทเรียน “ชุดข้อผิดพลาดและยูเนียน !T” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “ชุดข้อผิดพลาดและยูเนียน !T”

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

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

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

บทเรียน “ชุดข้อผิดพลาดและยูเนียน !T” ใช้เวลานานแค่ไหน

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

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

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

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

  1. ชุดข้อผิดพลาดและยูเนียน !T
  2. คืนข้อผิดพลาดจากฟังก์ชัน
  3. ส่งต่อความล้มเหลวด้วย try
  4. ชุดข้อผิดพลาดที่อนุมาน
← กลับไปที่ Zig Academy