throw, try และ catch
ตรวจจับและตอบสนองต่อความล้มเหลว
throw, try และ catch เป็นบทเรียน Dart Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Dart Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Dart Academy มีบทเรียนทั้งหมด 4 บทเรียน
เมื่อเกิดข้อผิดพลาด
โปรแกรมอาจพบปัญหา เช่น ข้อมูลนำเข้าไม่ถูกต้อง ไฟล์หายไป หรือการคำนวณผิดพลาด Dart จะแจ้งปัญหาเหล่านี้ด้วย ข้อยกเว้นแทนการทำงานผิดพลาดอย่างเงียบ ๆ 🚨
โยนข้อยกเว้น
คุณแจ้งปัญหาด้วยตัวเองได้ด้วย throw ซึ่งจะหยุดลำดับการทำงานปกติทันทีที่เกิดปัญหา และส่งต่อการควบคุมให้ตัวจัดการ
throw Exception('Something failed');คุณสามารถโยนอะไรก็ได้
Dart อนุญาตให้คุณ throwออบเจ็กต์เกือบทุกชนิด แม้แต่ String แต่ในทางปฏิบัติ ควรโยนออบเจ็กต์ Exception หรือ Error จริง เพื่อให้ตัวจัดการอ่านเข้าใจได้ชัดเจน
throw FormatException('Bad number');ป้องกันโค้ดที่เสี่ยงเกิดข้อผิดพลาด
ห่อโค้ดที่อาจล้มเหลวไว้ภายในบล็อก try Dart จะทำงานตามปกติ แต่เตรียมพร้อมตอบสนองหากมีการโยนข้อยกเว้น
try {
risky();
}ดักจับปัญหา
บล็อก catchจะทำงานเมื่อบล็อก try โยนข้อยกเว้นเท่านั้น โดยจะได้รับออบเจ็กต์ที่ถูกโยนมา เพื่อให้คุณตรวจสอบและตอบสนองได้
try {
risky();
} catch (e) {
print('Caught: $e');
}ลำดับการทำงานข้ามไปข้างหน้า
เมื่อเกิดการโยนข้อยกเว้น ส่วนที่เหลือของบล็อก tryจะถูกข้ามทันที Dart จะกระโดดไปยังบล็อก catch ที่ตรงกัน
อ่านออบเจ็กต์ข้อผิดพลาด
ตัวแปรใน catch (e)จะเก็บสิ่งที่ถูกโยนมา การพิมพ์ค่าตัวแปรนี้มักแสดงข้อความที่ช่วยอธิบายว่าส่วนใดทำงานผิดพลาด
catch (e) {
print(e);
}ดึงร่องรอยสแต็ก
เพิ่มตัวแปรตัวที่สองให้กับ catch เพื่อรับร่องรอยสแต็ก ซึ่งจะแสดงเส้นทางการเรียกใช้ที่นำไปสู่ความล้มเหลว ทำให้แก้จุดบกพร่องได้ง่ายขึ้น
catch (e, stack) {
print(stack);
}กู้คืนแทนการทำให้โปรแกรมหยุดทำงาน
เป้าหมายของการดักจับคือ การกู้คืน แทนที่จะทำให้โปรแกรมหยุดทำงาน คุณสามารถบันทึกเหตุการณ์ ลองใหม่ หรือแสดงทางเลือกสำรองที่เป็นมิตรแก่ผู้ใช้
ไม่มีตัวดักจับ โปรแกรมจะหยุดทำงาน
หากไม่มีสิ่งใด ดักจับข้อยกเว้นที่ถูกโยนมา ข้อยกเว้นจะส่งต่อขึ้นไป และโปรแกรมจะหยุดทำงานพร้อมพิมพ์ข้อผิดพลาดลงในคอนโซล
ตัวอย่างฉบับสมบูรณ์
นี่คือรูปแบบทั้งหมด: มี throwอยู่ภายใน try จากนั้นถูกดักจับและจัดการอย่างเหมาะสม ทำให้การทำงานดำเนินต่อไปได้
try {
throw Exception('Oops');
} catch (e) {
print('Handled: $e');
}ตรวจสอบความเข้าใจอย่างรวดเร็ว
บล็อกใดตอบสนองต่อข้อยกเว้นที่ถูกโยนมา
สรุปทบทวน
ตอนนี้คุณสามารถแจ้งปัญหาด้วย throw ป้องกันโค้ดที่เสี่ยงด้วย try และกู้คืนใน catch ได้แล้ว ทั้งสามส่วนนี้ช่วยให้โปรแกรมทำงานต่อไปได้ 🎉
คำถามที่พบบ่อย
บทเรียน “throw, try และ catch” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “throw, try และ catch” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Dart Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Dart Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “throw, try และ catch”
ตรวจจับและตอบสนองต่อความล้มเหลว คุณปฏิบัติ Dart Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Dart Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Dart Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “throw, try และ catch” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Dart Academy นี้ได้ไหม
ได้ บทเรียน Dart Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- throw, try และ catch
- ข้อกำหนด on และชนิดข้อยกเว้น
- finally และการล้างข้อมูลที่รับประกัน
- ข้อยกเว้นแบบกำหนดเองและ rethrow