Zig Academy · บทเรียน

ส่งต่อความล้มเหลวด้วย try

ส่งต่อข้อผิดพลาดขึ้นไปด้วยคีย์เวิร์ดเดียว

บทเรียน 3 จาก 413 ขั้นตอน

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

การจัดการซ้ำซาก

การเขียน if-else รอบการเรียกที่อาจล้มเหลวทุกครั้งเพื่อส่งต่อข้อผิดพลาดนั้นทำให้โค้ดเยิ่นเย้ออย่างรวดเร็ว Zig จึงมีทางลัดคือคีย์เวิร์ด try

try แกะค่าหรือส่งคืน

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

const n = try parse(input);

เป็นเพียงน้ำตาลทางไวยากรณ์

บรรทัดเดียวนี้ให้ผลเหมือนกับการจับข้อผิดพลาดแล้วส่งคืนด้วยตัวคุณเองทุกประการ try เพียงเขียนโค้ดส่วนซ้ำซากแทนคุณ

const n = parse(input) catch |e| return e;

ฟังก์ชันของคุณต้องอาจล้มเหลวได้

เนื่องจาก try สามารถส่งคืนข้อผิดพลาดได้ ฟังก์ชันที่ครอบอยู่จึงต้องมีชนิดค่าที่ส่งคืนเป็นยูเนียนข้อผิดพลาด มิฉะนั้นคอมไพเลอร์จะปฏิเสธ

fn run() !void {
    const n = try parse(input);
}

เชื่อม try หลายตัว

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

const f = try open(path);
const data = try read(f);

try ตรงกลางนิพจน์

คุณสามารถวาง try ไว้ภายในนิพจน์ที่ใหญ่กว่าได้โดยตรง ค่าที่แกะแล้วจะไหลเข้าสู่การเรียกหรือการคำนวณรอบข้างทันที

const total = base + try parse(input);

try กับการเรียกที่คืนค่า void

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

try file.writeAll(data);

ข้อผิดพลาดไต่ขึ้นตามสแตก

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

เส้นทางสำเร็จที่อ่านง่าย

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

try ไม่ได้จัดการข้อผิดพลาด

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

ควรส่งต่อเมื่อใด

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

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

คุณเขียน try doThing() ภายในฟังก์ชัน หาก doThing ส่งคืนข้อผิดพลาด จะเกิดอะไรขึ้น

สรุปทบทวน

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

เริ่มต้นได้ฟรี

เรียนรู้ Zig ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
30
บทเรียน
120

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

บทเรียน “ส่งต่อความล้มเหลวด้วย try” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “ส่งต่อความล้มเหลวด้วย try”

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

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

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

บทเรียน “ส่งต่อความล้มเหลวด้วย try” ใช้เวลานานแค่ไหน

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

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

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

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

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