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

คืนข้อผิดพลาดจากฟังก์ชัน

ทำให้ความล้มเหลวปรากฏอย่างชัดเจนในลายเซ็น

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

ความล้มเหลวในลายเซ็น

เมื่อฟังก์ชันอาจล้มเหลว ให้ระบุไว้ใน ชนิดค่าที่ส่งคืน ยูเนียนข้อผิดพลาดอย่าง ParseError!u32 จะแจ้งเตือนผู้เรียกทุกคนตั้งแต่ต้น

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

ส่งคืนค่าสำเร็จ

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

return 42;

ส่งคืนข้อผิดพลาดแทน

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

if (s.len == 0) return error.Empty;

การส่งคืนหนึ่งครั้ง ผลลัพธ์สองแบบ

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

if (ok) return value;
return error.Failed;

Void บวกข้อผิดพลาด

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

fn save() !void {
    // ...
}

ข้อผิดพลาดไหลต่อที่จุดเรียกใช้

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

const n = parse(input);

จับข้อผิดพลาดด้วย if

if สามารถแยกยูเนียนได้ โดยจับค่าไว้ในแขนงหลัก และจับข้อผิดพลาดหลัง else พร้อมตั้งชื่อแต่ละค่าด้วยเครื่องหมายไพป์

if (parse(input)) |n| {
    use(n);
} else |err| {
    report(err);
}

ระบุชุดข้อผิดพลาดอย่างแม่นยำ

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

fn open(p: []const u8) FileError!File {}

ข้อผิดพลาดข้ามขอบเขตฟังก์ชัน

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

ทำให้ความล้มเหลวชัดเจน

นี่คือหัวใจของการจัดการข้อผิดพลาดใน Zig: ความล้มเหลวจะไม่ถูกซ่อนไว้ ลายเซ็นคือคำสัญญาว่าอะไรบ้างที่อาจผิดพลาด

คอมไพเลอร์คอยช่วยคุณ

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

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

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

สรุปทบทวน

คุณได้ประกาศฟังก์ชันที่อาจล้มเหลวด้วย !T ส่งคืนค่าหรือข้อผิดพลาดจากคำสั่งส่งคืนเดียว และเห็นว่าคอมไพเลอร์บังคับให้ผู้เรียกจัดการสิ่งเหล่านั้น ✅

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

บทเรียน “คืนข้อผิดพลาดจากฟังก์ชัน” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “คืนข้อผิดพลาดจากฟังก์ชัน”

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

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

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

บทเรียน “คืนข้อผิดพลาดจากฟังก์ชัน” ใช้เวลานานแค่ไหน

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

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

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

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

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