Dart Academy · บทเรียน

finally และการล้างข้อมูลที่รับประกัน

เรียกใช้โค้ดไม่ว่าจะเกิดข้อผิดพลาดหรือไม่

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

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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

  1. throw, try และ catch
  2. ข้อกำหนด on และชนิดข้อยกเว้น
  3. finally และการล้างข้อมูลที่รับประกัน
  4. ข้อยกเว้นแบบกำหนดเองและ rethrow
← กลับไปที่ Dart Academy