finally และการล้างข้อมูลที่รับประกัน
เรียกใช้โค้ดไม่ว่าจะเกิดข้อผิดพลาดหรือไม่
finally และการล้างข้อมูลที่รับประกัน เป็นบทเรียน Dart Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Dart Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Dart Academy มีบทเรียนทั้งหมด 4 บทเรียน
การเก็บกวาดต้องทำเสมอ
ไฟล์และการเชื่อมต่อที่เปิดไว้ต้องปิด แม้โค้ดจะล้มเหลว Dart มี finallyสำหรับการเก็บกวาดที่ต้องทำเสมอ 🧹
บล็อก finally
บล็อก finallyจะทำงานหลัง try และ catch ไม่ว่าจะเกิดอะไรขึ้น สำเร็จหรือล้มเหลว โค้ดในบล็อกนี้จะทำงานเสมอ
try {
work();
} finally {
cleanup();
}ทำงานหลังสำเร็จ
หากบล็อก try ทำงานเสร็จโดยไม่มีข้อผิดพลาด Dart จะยังคงเรียกใช้ บล็อก finally ทันทีหลังจากนั้นก่อนดำเนินการต่อ
ทำงานหลังการดักจับ
เมื่อดักจับข้อยกเว้นได้ บล็อก catch จะทำงาน จากนั้น บล็อก finally ก็จะทำงานด้วย โดยทำงานตามลำดับดังกล่าว
try {
fail();
} catch (e) {
log(e);
} finally {
close();
}ทำงานแม้ไม่มีการดักจับ
ใช้ try ร่วมกับ บล็อก finally เพียงอย่างเดียวโดยไม่มี catch ข้อยกเว้นจะยังคงส่งต่อขึ้นไป แต่การล้างทรัพยากรจะทำงานก่อนระหว่างที่ข้อยกเว้นถูกส่งออกไป
try {
risky();
} finally {
release();
}ทำไมไม่เขียนซ้ำไปเลย
หากไม่มี บล็อก finally คุณจะต้องคัดลอกการล้างทรัพยากรไว้ทั้งในเส้นทางสำเร็จและเส้นทางข้อผิดพลาด บล็อก finally เดียวช่วยรวมการทำงานนี้ไว้ในที่เดียว
ล้างทรัพยากรก่อนส่งข้อยกเว้นซ้ำ
แม้ข้อยกเว้นจะยังคงถูกส่งต่อขึ้นไปโดยไม่มีการดักจับ บล็อก finally ก็ยังทำงานก่อนเสมอ ดังนั้นทรัพยากรจึงไม่รั่วไหล
ปิดไฟล์อย่างปลอดภัย
กรณีใช้งานทั่วไปคือ เปิดทรัพยากรใน try ใช้งาน แล้วใช้ บล็อก finally เพื่อปิดทรัพยากรไม่ว่าการอ่านจะสำเร็จหรือไม่
try {
file.read();
} finally {
file.close();
}หลีกเลี่ยงการคืนค่าใน finally
คำสั่ง return ภายใน finally จะมีผลเหนือกว่าคำสั่งคืนค่าหรือข้อยกเว้นก่อนหน้า ควรใช้ finally สำหรับล้างทรัพยากรเท่านั้น ไม่ใช่ควบคุมลำดับการทำงาน
ลำดับการทำงาน
โปรดจำลำดับนี้: try ทำงาน จากนั้น catch จะทำงานหากจำเป็น แล้วจึงให้ finally ทำงานเป็นลำดับสุดท้าย การล้างทรัพยากรจะปิดท้ายบล็อกเสมอ
try-catch-finally ครบชุด
ส่วนนี้รวมทั้งสามอย่างเข้าด้วยกัน ได้แก่ งานที่มีการป้องกัน การจัดการข้อผิดพลาด และการล้างทรัพยากรด้วย finally ที่รับประกันว่าจะทำงานในตอนท้าย
try {
open();
} catch (e) {
print(e);
} finally {
close();
}ตรวจสอบอย่างรวดเร็ว
บล็อก finally ทำงานเมื่อใด
สรุปทบทวน
ตอนนี้คุณสามารถใช้ finally เพื่อล้างทรัพยากรที่รับประกันว่าจะทำงานในทุกเส้นทาง ได้แก่ สำเร็จ ดักจับข้อผิดพลาดได้ หรือโยนข้อยกเว้นโดยไม่มีการดักจับ ไม่มีทรัพยากรรั่วไหล 🔒
เรียนรู้ Dart ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 30
- บทเรียน
- 120
คำถามที่พบบ่อย
บทเรียน “finally และการล้างข้อมูลที่รับประกัน” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “finally และการล้างข้อมูลที่รับประกัน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Dart Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Dart Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “finally และการล้างข้อมูลที่รับประกัน”
เรียกใช้โค้ดไม่ว่าจะเกิดข้อผิดพลาดหรือไม่ คุณปฏิบัติ Dart Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Dart Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Dart Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “finally และการล้างข้อมูลที่รับประกัน” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Dart Academy นี้ได้ไหม
ได้ บทเรียน Dart Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- throw, try และ catch
- ข้อกำหนด on และชนิดข้อยกเว้น
- finally และการล้างข้อมูลที่รับประกัน
- ข้อยกเว้นแบบกำหนดเองและ rethrow