Làm thế nào Javascript có thể sao chép bốn phần try
- catch
- else
- finally
mô hình thực thi mà các ngôn ngữ khác hỗ trợ?Javascript thử ... bắt ... khác ... cuối cùng như Python, Java, Ruby, v.v.
Tóm tắt ngắn gọn rõ ràng là từ Python 2.5 what's new. Về Javascript:
// XXX THIS EXAMPLE IS A SYNTAX ERROR
try {
// Protected-block
} catch(e) {
// Handler-block
} else {
// Else-block
} finally {
// Final-block
}
Các mã trong bảo vệ khối được thực thi. Nếu mã ném một ngoại lệ, Bộ xử lý chặn được thực thi; Nếu không có ngoại lệ nào được ném, Các khối khác được thực hiện.
Không có vấn đề gì xảy ra trước đó, Khối cuối cùng được thực hiện khi khối mã hoàn tất và mọi ngoại lệ được ném được xử lý. Ngay cả khi có lỗi trong số Bộ xử lý chặn hoặc Loại khác chặn và ngoại lệ mới được nêu ra, mã trong Khối cuối cùng vẫn chạy.
Lưu ý rằng cắt Else-block và dán vào cuối bảo vệ khối là sai. Nếu xảy ra lỗi trong Loại khác chặn, nó không được được xử lý bởi Bộ xử lý chặn.
Hoàn toàn. Tôi đã nghĩ đến việc làm một mô-đun NPM nhanh chóng để làm điều này. Tôi bỏ điều này ra khỏi câu trả lời của tôi bởi vì bạn phải cẩn thận vì giá trị 'this' sẽ thay đổi so với' try' lồng nhau đơn giản. Tuy nhiên ví dụ thứ hai của tôi cũng có lỗi đó. – JasonSmith
Phải. Chúng tôi có thể muốn ràng buộc 'điều này' của người gọi đến bốn cuộc gọi lại. Hãy gọi nó là một bài tập cho người đọc;) – Jakob
Chỉ cần xảy ra trở lại trên này. Lưu ý, trong các phiên bản JavaScript mới hơn, ký pháp "mũi tên chất béo" làm cho cú pháp thậm chí dễ đọc hơn. – JasonSmith