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