สคริปต์ต่อไปนี้ช่วยให้คุณสามารถเรียกใช้โค้ดจาวาสคริปต์ได้ ข้อผิดพลาดกำลังถูกจับได้โดยบล็อก try / catch
try {
var result = eval(script);
} catch (e) {
// do something meaningful
}
อย่างไรก็ตาม หากตัวแปร script
มีอินสแตนซ์ของการเรียก AJAX และการเรียก ajax นี้ส่งข้อยกเว้น (เช่น ในฟังก์ชันความสำเร็จ) ข้อยกเว้นนี้จะไม่ถูกตรวจจับโดยบล็อก try / catch นี้...
// execute an AJAX request
var script = '$.ajax(url:"/somewhere", success: function(){throw new MyException('testexception')})';
try {
var result = eval(script);
} catch (e) {
// will not be triggered...
}
คำถาม: ฉันจะตรวจจับข้อยกเว้นที่เกิดขึ้นภายในคำขอ ajax ได้อย่างไร
eval
เลย แม้ว่าคุณจะไม่ได้ใช้งานและคุณมีฟังก์ชันนั้นอยู่ในบล็อกtry/catch
ก็จะไม่ตรวจพบข้อยกเว้นจากฟังก์ชันsuccess
เนื่องจากเป็นการเรียกกลับ รหัสนั้นจะไม่ถูกเรียกจนกว่าคุณจะออกจากtry/catch
- person Matt Burland   schedule 01.06.2017async: false
api.jquery.com/jquery.ajax - person idream1nC0de   schedule 01.06.2017