Hãy thử bắt nodejs

Luồng là một cấu trúc cho phép người dùng đọc/ghi dữ liệu tuần tự từ/đến nó. Luồng chủ yếu được sử dụng khi làm việc với lượng dữ liệu lớn. Khi bạn muốn di chuyển khối dữ liệu lớn từ nơi này sang nơi khác [ví dụ: từ tệp này sang tệp mới], tốt hơn là sử dụng tính năng phát trực tuyến, vì vậy bạn không cần phải giữ toàn bộ dữ liệu trong bộ nhớ [thậm chí có thể là không thể nếu dữ liệu . Đọc thêm

Chúng tôi đang tạo một luồng Writable [luồng chỉ cho phép ghi dữ liệu] và ngay sau đó hủy nó. Hàm destroy[] nhận lỗi tham số được đưa ra khi luồng được sử dụng sau khi hủy. Sau đó, chúng tôi cố gắng sử dụng một luồng và dự kiến ​​sẽ gặp lỗi trong khối catch

Như bạn có thể đoán nó không bị bắt

Điều gì đang xảy ra?

Câu trả lời cho câu hỏi này là luồng đó là một lớp con của đối tượng EventEmitter đang sử dụng hàm gọi lại không đồng bộ

Hừm, nhưng nó có nghĩa là gì?

trình phát sự kiện

Bộ phát sự kiện là một đối tượng được cung cấp bởi Node. js để hoạt động với hệ thống sự kiện [nó là một phần của gói sự kiện tích hợp]. Nó cho phép chúng tôi gửi các sự kiện và xử lý chúng với người nghe. Mã nói nhiều hơn hàng ngàn từ, vì vậy đây là ví dụ về cách sử dụng trình phát sự kiện cơ bản

Chúng tôi đang tạo một phiên bản EventEmitter mới và đính kèm một trình xử lý sự kiện vào sự kiện 'myEvent'. Bây giờ mỗi khi 'myEvent' được phát ra, hàm eventHandler[] sẽ được gọi. Sau đó, chúng tôi phát ra sự kiện này và mong đợi trình xử lý được kích hoạt

Và đầu ra như mong đợi

Điều gì sẽ xảy ra nếu chúng ta đưa ra lỗi bên trong trình xử lý? . Hãy xem nào

Điều này thực sự nên nói “Bắt lỗi. ”

Thật tuyệt vời. Nó bị bắt. một thí nghiệm khác. Hãy chuyển đổi trình phát sự kiện thành trình phát sự kiện không đồng bộ. Để làm điều đó, chỉ cần gửi một hàm không đồng bộ dưới dạng gọi lại

Và sau khi chạy tập lệnh, chúng ta có thể thấy lỗi đó không bị bắt

Nếu bạn nghĩ về nó, đó là một hành vi hợp lý. Chúng tôi đang gửi một trình xử lý không đồng bộ và không có nơi nào chúng tôi chờ đợi nó [cũng như việc sử dụng nó]. Cuộc gọi lại trình phát sự kiện được gọi độc lập với lần thử bắt, vì vậy nó không bao giờ bị bắt

Làm thế nào để chúng tôi làm cho nó không bị sập ứng dụng?

Xử lý lỗi bộ phát sự kiện

Các đối tượng trình phát sự kiện cung cấp cho chúng tôi một sự kiện đặc biệt để xử lý lỗi. Mỗi khi xảy ra lỗi bên trong phiên bản trình phát sự kiện, một sự kiện 'error' đặc biệt được phát ra. Nhưng chúng ta cần ngầm yêu cầu bộ phát sự kiện hành động theo cách đó bằng cách gửi destroy[]0 bên trong một hàm tạo

Tất cả những gì chúng ta cần làm bây giờ là đính kèm một cuộc gọi lại vào sự kiện 'error'

Hiện không có ứng dụng nào gặp sự cố

Sửa ví dụ về luồng

Nhớ ví dụ đầu tiên? . Đối với các luồng, chúng tôi không cần đặt destroy[]2. Nó được đặt theo mặc định

Tất cả những gì cần thiết là gọi lại sự kiện 'error'

Ít thay đổi mã có thể ngăn chặn sự cố mã sản xuất của bạn trong những thời điểm không thể đoán trước

Làm thế nào để tránh những lỗi chưa được xử lý?

Khá đơn giản, bạn chỉ cần thiết lập callback cho sự kiện 'error'. Câu hỏi thực sự là, làm thế nào bạn biết nếu bạn đang làm việc với lớp con trình phát sự kiện?

Có một vài ví dụ tích hợp, nổi tiếng về trình phát sự kiện

  • Luồng [destroy[]5] — đã nói về chúng
  • Net [destroy[]6] - được sử dụng để kết nối mạng
  • destroy[]7 từ gói destroy[]8 [destroy[]9] — được sử dụng để tạo luồng từ tệp [nó thuộc danh mục luồng, nhưng nó phổ biến đến mức tôi quyết định ghi chú ở đây]

Về cơ bản, tất cả các đối tượng phát ra sự kiện là thể hiện của trình phát sự kiện

Để chắc chắn, bạn có thể xem xét triển khai và kiểm tra xem nó có mở rộng EventEmitter hay có EventEmitter trong chuỗi nguyên mẫu không. Kiểm tra tài liệu cũng sẽ hữu ích

ghi chú cuối cùng

Chúng tôi bắt đầu với một ví dụ đơn giản nhưng thực tế. Một số nhà phát triển đã sử dụng luồng bên trong try-catch và chắc chắn rằng ứng dụng sẽ không bao giờ gặp sự cố. Một vài lần một tuần, ứng dụng bị sập mà không có lý do. Anh ấy đã làm việc chăm chỉ để tìm ra một vấn đề nhưng không biết

“Nơi xảy ra sự cố là bên trong try-catch. Nó nên bị bắt. Những lỗi đó trượt ở đâu?

Cho đến khi anh ấy nhận ra về các trình phát sự kiện và mọi thứ trở nên rõ ràng ngay lập tức

Hy vọng bạn sẽ không làm sai lầm đó

Trình phát sự kiện là một chủ đề rất thú vị. Để đọc thêm, hãy kiểm tra xem nó ra

Xây dựng các ứng dụng web có thể kết hợp

Đừng xây dựng web nguyên khối. Sử dụng Bit để tạo và soạn các thành phần phần mềm tách rời — trong các khung yêu thích của bạn như React hoặc Node. Xây dựng các ứng dụng mô-đun và có thể mở rộng với trải nghiệm nhà phát triển mạnh mẽ và thú vị

Đưa nhóm của bạn đến Bit Cloud để lưu trữ và cộng tác trên các thành phần cùng nhau, đồng thời tăng tốc, mở rộng quy mô và chuẩn hóa quá trình phát triển theo nhóm. Hãy thử giao diện người dùng có thể kết hợp với Hệ thống thiết kế hoặc Giao diện vi mô hoặc khám phá phần phụ trợ có thể kết hợp với các thành phần phía máy chủ

Thử và nắm bắt trong nút JS là gì?

Thử. câu lệnh catch là bao gồm một khối try và một khối catch, một khối finally hoặc cả hai . Mã trong khối thử được thực thi trước và nếu nó đưa ra một ngoại lệ, mã trong khối bắt sẽ được thực thi.

Sử dụng thử bắt trong nút JS có tốt không?

Ghi chú. Đó là một cách thực hành tốt để sử dụng Node. js Chỉ thử Catch cho các hoạt động đồng bộ . Chúng ta cũng sẽ tìm hiểu trong hướng dẫn này về lý do không nên sử dụng Try Catch cho các hoạt động không đồng bộ.

try catch dùng để làm gì?

Thử/bắt khối cho phép chương trình xử lý ngoại lệ một cách khéo léo theo cách mà lập trình viên muốn . Ví dụ: các khối try/catch sẽ cho phép chương trình in thông báo lỗi [chứ không chỉ là sự cố] nếu chương trình không thể tìm thấy tệp đầu vào. Các khối thử là phần đầu tiên của các khối thử/bắt.

Làm cách nào để bắt lỗi trong nút js?

Xử lý lỗi trong Nút. .
cải thiện trải nghiệm của người dùng cuối; . e. , cung cấp thông tin chính xác chứ không phải thông báo chung chung “Không thể thực hiện yêu cầu”
phát triển một cơ sở mã mạnh mẽ
rút ngắn thời gian phát triển bằng cách tìm lỗi hiệu quả
tránh dừng chương trình đột ngột

Chủ Đề