Trong Javascript, giả sử tôi muốn thực hiện một số dọn dẹp khi có ngoại lệ xảy ra, nhưng hãy để ngoại lệ tiếp tục truyền bá ngăn xếp, ví dụ:
try {
enterAwesomeMode();
doRiskyStuff(); // might throw an exception
} catch (e) {
leaveAwesomeMode();
throw e;
}
doMoreStuff();
leaveAwesomeMode();
Vấn đề với mã này là việc bắt và lấy lại ngoại lệ làm cho thông tin theo dõi ngăn xếp bị mất đến điểm đó, do đó, nếu ngoại lệ sau đó bị bắt lại, cao hơn trên ngăn xếp, dấu vết ngăn xếp chỉ đi xuống lại -phi. Điều này thật tệ bởi vì nó có nghĩa là nó không chứa hàm thực sự đã ném ngoại lệ.
Hóa ra, hãy thử..tất cả đều có hành vi tương tự, trong ít nhất là Chrome (nghĩa là, đó không phải là vấn đề chính xác, mà là sự hiện diện của bất kỳ khối xử lý ngoại lệ nào).
Có ai biết cách để lấy lại một ngoại lệ trong Javascript nhưng lưu giữ dấu vết ngăn xếp liên quan đến nó không? Không, làm thế nào về các đề xuất cho các cách khác để thêm trình xử lý dọn dẹp ngoại lệ, đồng thời ghi lại các dấu vết ngăn xếp hoàn chỉnh khi có ngoại lệ xảy ra?
Cảm ơn cho bất kỳ con trỏ :)