ฉันต้อง "return" หลังจาก "throw" ใน JavaScript หรือไม่


103

ฉันกำลังโยนErrorวิธีการของฉันที่ฉันต้องการออกก่อนเวลาดังต่อไปนี้:

// No route found
if(null === nextRoute) {
    throw new Error('BAD_ROUTE');
}

ฉันต้องใส่return;คำสั่งหลังจากฉันthrowหรือไม่? มันใช้ได้สำหรับฉันในตอนนี้ ถ้ามันฟุ่มเฟือยฉันไม่ควรใส่ แต่ฉันไม่แน่ใจว่าเบราว์เซอร์อื่นจะทำอะไรได้

คำตอบ:


167

คุณไม่จำเป็นต้องออกreturnคำสั่งหลังจากthrowนั้นreturnสายจะไม่มีทางไปถึงเมื่อโยนข้อยกเว้นทันทีที่มือควบคุมกลับไปที่ผู้โทร


1
"ทิ้งข้อยกเว้นทันทีมือควบคุมกลับไปที่ผู้โทร" ... เว้นแต่จะมี CATCH เพื่อจัดการข้อผิดพลาดที่เกิดขึ้นในเส้นทางใด ๆ ของ call stack
Mahesh

12
@Mahesh ฉันไม่แน่ใจว่าคุณหมายถึงอะไรโดย "เว้นแต่" - CATCH ใด ๆ ในสแต็กข้างใต้ที่throwเกิดเหตุการณ์นั้นเป็นส่วนหนึ่งของ "ผู้โทร"
Rob M.

1
ฉันมี console.log หลังจากบรรทัด 'throw new Error ()' และ console.log นี้กำลังดำเนินการ แล้วทำไมล่ะ?
Aleks Grunwald
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.