8
อะไรคือข้อแตกต่างระหว่าง“ โยนข้อผิดพลาดใหม่” และ“ โยนข้อผิดพลาดบางอย่าง”
ฉันต้องการที่จะเขียนตัวจัดการข้อผิดพลาดทั่วไปซึ่งจะจับข้อผิดพลาดที่กำหนดเองที่เกิดขึ้นกับจุดประสงค์ที่โค้ดใด ๆ เมื่อฉันไม่throw new Error('sample')ชอบในรหัสต่อไปนี้ try { throw new Error({'hehe':'haha'}); // throw new Error('hehe'); } catch(e) { alert(e); console.log(e); } เข้าสู่ระบบแสดงใน Firefox เป็นError: [object Object]และฉันไม่สามารถแยกวัตถุ สำหรับบันทึกที่สองthrowแสดงเป็น:Error: hehe ในขณะที่ฉันทำ try { throw ({'hehe':'haha'}); } catch(e) { alert(e); console.log(e); } คอนโซลแสดงเป็น: Object { hehe="haha"}ซึ่งฉันสามารถเข้าถึงคุณสมบัติข้อผิดพลาด อะไรคือความแตกต่าง? ความแตกต่างที่เห็นในรหัสคืออะไร? เช่นเดียวกับสตริงจะถูกส่งผ่านเป็นสตริงและวัตถุเป็นวัตถุ แต่ไวยากรณ์จะแตกต่างกันอย่างไร ฉันไม่ได้สำรวจวัตถุข้อผิดพลาดในการขว้างปา ... ฉันทำแค่โยนสาย มีวิธีอื่นนอกเหนือจากสองวิธีที่กล่าวมาข้างต้นหรือไม่?