ไม่มีจุดที่จะจับเปลือยและโยนอย่างที่คุณแสดง มันไม่ได้ทำประโยชน์อะไรเลยนอกจากเพิ่มโค้ดและการดำเนินการช้า ดังนั้นหากคุณกำลังจะ.catch()
ปลูกใหม่ควรมีบางสิ่งที่คุณต้องการทำใน.catch()
มิฉะนั้นคุณควรลบ.catch()
ทั้งหมด
จุดปกติสำหรับโครงสร้างทั่วไปนั้นคือเมื่อคุณต้องการดำเนินการบางอย่าง.catch()
เช่นบันทึกข้อผิดพลาดหรือล้างสถานะบางอย่าง (เช่นไฟล์ปิด) แต่คุณต้องการให้ห่วงโซ่สัญญาดำเนินการต่อเมื่อถูกปฏิเสธ
promise.then(function(result){
}).catch(function(error) {
console.log(error);
throw error;
});
ในบทช่วยสอนอาจมีไว้เพื่อแสดงให้ผู้คนเห็นว่าพวกเขาสามารถจับข้อผิดพลาดได้ที่ไหนหรือสอนแนวคิดในการจัดการข้อผิดพลาดจากนั้นจึงเปลี่ยนใหม่
เหตุผลที่เป็นประโยชน์บางประการในการจับและปลูกใหม่มีดังนี้:
- คุณต้องการบันทึกข้อผิดพลาดแต่ให้ห่วงโซ่สัญญาว่าถูกปฏิเสธ
- คุณต้องการเปลี่ยนข้อผิดพลาดให้เป็นข้อผิดพลาดอื่น ๆ (โดยมากเพื่อให้การประมวลผลข้อผิดพลาดง่ายขึ้นที่ส่วนท้ายของห่วงโซ่) ในกรณีนี้คุณจะต้องแก้ไขข้อผิดพลาดอื่น
- คุณต้องการประมวลผลจำนวนมากก่อนที่ห่วงโซ่สัญญาจะดำเนินต่อไป (เช่นทรัพยากรที่ปิด / ไม่มีค่าใช้จ่าย) แต่คุณต้องการให้ห่วงโซ่สัญญาถูกปฏิเสธ
- คุณต้องการจุดที่จะวางเบรกพอยต์สำหรับดีบักเกอร์ณ จุดนี้ในห่วงโซ่สัญญาหากเกิดความล้มเหลว
แต่การตรวจจับข้อผิดพลาดแบบธรรมดาและการย้อนกลับของข้อผิดพลาดเดียวกันโดยไม่มีรหัสอื่นในตัวจัดการการจับไม่ได้ทำอะไรที่เป็นประโยชน์สำหรับการเรียกใช้โค้ดตามปกติ