ใน node.js เมื่อเกิดข้อผิดพลาดในฟังก์ชั่นการโทรกลับกระบวนการทั้งหมดจะล่มส่งผลกระทบต่อการดำเนินการของรหัสที่ตามมา
node.js จัดการด้วยวิธีนี้เพราะเมื่อเกิดข้อผิดพลาดที่ไม่ถูกต้องสถานะของกระบวนการไม่แน่นอน มันจะไม่ทำงานอย่างถูกต้องหลังจากนั้น หากไม่มีการประมวลผลข้อผิดพลาดข้อผิดพลาดที่ไม่คาดคิดจะถูกโยนลงไปซึ่งไม่เอื้อต่อการดีบัก
มีสองวิธีหลักในการป้องกันการบล็อกกระบวนการที่เกิดจากข้อผิดพลาด:
1. ลองจับ
Try-catch อนุญาตให้จับภาพข้อยกเว้นและอนุญาตให้รหัสดำเนินการต่อไป:
ตัวอย่างเช่น:
เมื่อฟังก์ชั่นเกิดข้อผิดพลาดรหัสจะหยุดการดำเนินการ:
(function () {var a = 0; a (); console.log ("ไปที่นี่"); // ไม่ถูกดำเนินการ}) ();หลังจากใช้การลองจับสำหรับการประมวลผลข้อผิดพลาดรหัสยังคงสามารถดำเนินการได้:
(function () {var a = 0; ลอง {a ();} catch (e) {console.log (e);} console.log ("มาที่นี่"); // ไปที่นี่}) ();Try-Catch ไม่สามารถจับข้อผิดพลาดของฟังก์ชั่นการดำเนินการในอนาคตได้
เป็นไปไม่ได้ที่จะจับข้อผิดพลาดที่ถูกโยนลงโดยฟังก์ชั่นที่ดำเนินการเฉพาะในอนาคต สิ่งนี้จะทำให้เกิดข้อยกเว้นที่ไม่ได้รับการยกเว้นโดยตรงและบล็อกรหัสจับจะไม่ถูกดำเนินการ:
ลอง {settimeout (function () {โยนข้อผิดพลาดใหม่ ("ที่นี่");}, 10);} catch (e) {console.log (e);}นี่คือเหตุผลที่ใน node.js ถั่วงอกได้รับการจัดการอย่างถูกต้องในแต่ละขั้นตอน
เพิ่มตัวจัดการ uncatchexception
หากเพิ่มโปรเซสเซอร์ uncatchexception กระบวนการจะไม่ออกเมื่อฟังก์ชั่นส่งข้อผิดพลาด
process.on ("uncatchexception", ฟังก์ชัน (e) {console.log (e); process.exit (1);});ข้างต้นเป็นวิธีการป้องกันการปิดกั้นกระบวนการใน node.js ที่เกิดจากข้อผิดพลาดที่แนะนำโดยตัวแก้ไข ฉันหวังว่ามันจะเป็นประโยชน์กับคุณ หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับคุณทันเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!