ชุดข้อผิดพลาดและยูเนียน !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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ชุดข้อผิดพลาดและยูเนียน !T
- คืนข้อผิดพลาดจากฟังก์ชัน
- ส่งต่อความล้มเหลวด้วย try
- ชุดข้อผิดพลาดที่อนุมาน