Trong javascript, giả sử tôi muốn thực hiện một số ngẫu nhiên khi một ngoại lệ xảy ra, nhưng chúng ta hãy ngoại trừ tiếp tục tuyên truyền lên stack, ví dụ:Làm cách nào để tôi có thể trả lại ngoại lệ trong Javascript, nhưng vẫn giữ nguyên ngăn xếp?
try {
enterAwesomeMode();
doRiskyStuff(); // might throw an exception
} catch (e) {
leaveAwesomeMode();
throw e;
}
doMoreStuff();
leaveAwesomeMode();
Vấn đề với mã này là bắt và rethrowing những nguyên nhân ngoại lệ ngăn xếp theo dõi thông tin đến thời điểm đó để bị mất, để nếu ngoại lệ sau đó bị bắt lại, cao hơn trên stack, ngăn xếp dấu vết chỉ đi xuống để ném lại. Điều này hút bởi vì nó có nghĩa là nó không chứa hàm thực sự đã ném ngoại lệ.
Khi nó quay ra, hãy thử ..cuối cùng có hành vi tương tự, trong ít nhất Chrome (nghĩa là, nó không phải là ném lại đó là vấn đề chính xác, nhưng sự hiện diện của bất kỳ khối xử lý ngoại lệ nào cả.)
Có ai biết cách để tính lại ngoại lệ trong Javascript nhưng vẫn giữ nguyên dấu vết ngăn xếp được liên kết với nó không? Không có điều đó, làm thế nào về các đề xuất cho các cách khác để thêm bộ xử lý dọn dẹp ngoại lệ an toàn, trong khi cũng chụp dấu vết ngăn xếp hoàn thành khi một ngoại lệ xảy ra?
Thanks cho bất kỳ gợi ý :)
0x3a28213a - mong được cảm ơn của tôi ;-) – bacar
Đợi: https://stackoverflow.com/questions/5249960/javascript-rethrowing-an-exception-preserving-the-stack-trace – MatthewMartin
Câu hỏi này nên được đóng vì nó đề cập đến một lỗi Chrome được sửa vào năm 2012. –