ข้อผิดพลาดที่คาดไว้และไม่คาดไว้
แยกข้อผิดพลาดที่คาดไว้และควรแสดงต่อผู้ใช้ออกจากข้อผิดพลาดที่ไม่คาดคิดของเซิร์ฟเวอร์
ข้อผิดพลาดที่คาดไว้และไม่คาดไว้ เป็นบทเรียน Sveltejs Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Sveltejs Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Sveltejs Academy มีบทเรียนทั้งหมด 4 บทเรียน
สองประเภท
SvelteKit แยกข้อผิดพลาดที่คาดไว้ ซึ่งถูกโยนโดยตั้งใจ ออกจากข้อผิดพลาดที่ไม่คาดคิด ซึ่งมักเกิดจากข้อบกพร่อง
ข้อผิดพลาดที่คาดไว้: error()
เรียก error(status, message) สำหรับกรณีความล้มเหลวที่ทราบอยู่แล้ว
if (!post) error(404, "Post not found");ข้อผิดพลาดที่ไม่คาดคิด: การโยนที่ไม่ถูกดักจับ
การโยนข้อผิดพลาดรูปแบบอื่นถือว่าไม่คาดคิด SvelteKit จะซ่อนข้อความจากไคลเอ็นต์เพื่อความปลอดภัย
เหตุผลที่ต้องซ่อนข้อความ
ข้อความข้อผิดพลาดที่ไม่คาดคิดอาจเปิดเผยรายละเอียดของสแตกหรือการนำไปใช้งาน การแสดงข้อความทั่วไปจึงปลอดภัยกว่า
handleError
ใช้ handleError ในฮุกเพื่อบันทึกข้อผิดพลาดที่ไม่คาดคิดและปรับแต่งข้อความทั่วไป
รูปแบบ: ตรวจสอบอินพุต
เรียก error() เมื่ออินพุตไม่ถูกต้อง และปล่อยให้ข้อบกพร่องจริงปรากฏเป็นข้อผิดพลาดที่ไม่คาดคิด
ตัวช่วยเปลี่ยนเส้นทาง
redirect() ก็เป็นการดำเนินการโดยตั้งใจเช่นกัน ใช้สำหรับหน้าที่ต้องยืนยันตัวตนหรือที่อยู่เว็บที่ย้ายแล้ว
การกู้คืนด้วย Try/Catch
ครอบการเรียกบริการภายนอกที่มีความเสี่ยงด้วย try/catch และจัดการกรณีสำรองอย่างเหมาะสมเพื่อหลีกเลี่ยงหน้าข้อผิดพลาด
ชนิดของ TypeScript
error() ของ SvelteKit มีการกำหนดชนิดและจะโยนข้อผิดพลาด ดังนั้นโค้ดส่วนที่เหลือจึงยังเข้าถึงได้หลังตรรกะการส่งคืนก่อนกำหนด
การเลือกรหัสสถานะ
ใช้ 404 เมื่อไม่พบข้อมูล 401 เมื่อไม่ได้รับอนุญาตให้ยืนยันตัวตน 403 เมื่อไม่มีสิทธิ์ และ 500 สำหรับข้อผิดพลาดของเซิร์ฟเวอร์
หลีกเลี่ยงการโยนข้อผิดพลาดทั่วไป
throw new Error ธรรมดาในเส้นทางที่ผู้ใช้มองเห็นจะถูกจัดเป็นข้อผิดพลาดที่ไม่คาดคิด ใช้ error() เพื่อสร้างประสบการณ์ผู้ใช้ที่ชัดเจน
ตรวจสอบอย่างรวดเร็ว
error(404) แตกต่างจาก throw new Error อย่างไร
สรุปทบทวน
ใช้ error() สำหรับความล้มเหลวที่ตั้งใจให้เกิดพร้อมข้อความที่ผู้ใช้มองเห็น และปล่อยให้ข้อบกพร่องจริงถูกโยนออกมาแล้วบันทึกโดย handleError
คำถามที่พบบ่อย
บทเรียน “ข้อผิดพลาดที่คาดไว้และไม่คาดไว้” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ข้อผิดพลาดที่คาดไว้และไม่คาดไว้” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Sveltejs Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Sveltejs Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ข้อผิดพลาดที่คาดไว้และไม่คาดไว้”
แยกข้อผิดพลาดที่คาดไว้และควรแสดงต่อผู้ใช้ออกจากข้อผิดพลาดที่ไม่คาดคิดของเซิร์ฟเวอร์ คุณปฏิบัติ Sveltejs Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Sveltejs Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Sveltejs Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “ข้อผิดพลาดที่คาดไว้และไม่คาดไว้” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Sveltejs Academy นี้ได้ไหม
ได้ บทเรียน Sveltejs Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- +error.svelte สำหรับหน้าข้อผิดพลาดกำหนดเอง
- ข้อผิดพลาดที่คาดไว้และไม่คาดไว้
- ตัวช่วย error() และ redirect()
- หน้าข้อผิดพลาดในโครงร่างแบบซ้อน