Koa.js - Xử lý lỗi

Xử lý lỗi đóng một phần quan trọng trong việc xây dựng ứng dụng web. Koa cũng sử dụng phần mềm trung gian cho mục đích này.

Trong Koa, bạn thêm một phần mềm trung gian try { yield next }là một trong những phần mềm trung gian đầu tiên. Nếu chúng tôi gặp bất kỳ lỗi nào ở phía dưới, chúng tôi quay lại mệnh đề bắt được liên kết và xử lý lỗi tại đây. Ví dụ -

var koa = require('koa');
var app = koa();

//Error handling middleware
app.use(function *(next) {
   try {
      yield next;
   } catch (err) {
      this.status = err.status || 500;
      this.body = err.message;
      this.app.emit('error', err, this);
   }
});

//Create an error in the next middleware
//Set the error message and status code and throw it using context object

app.use(function *(next) {
   //This will set status and message
   this.throw('Error Message', 500);
});

app.listen(3000);

Chúng tôi đã cố tình tạo ra một lỗi trong đoạn mã trên và đang xử lý lỗi trong khối bắt phần mềm trung gian đầu tiên của chúng tôi. Điều này sau đó được gửi đến bảng điều khiển của chúng tôi cũng như được gửi dưới dạng phản hồi cho khách hàng của chúng tôi. Sau đây là thông báo lỗi chúng tôi nhận được khi chúng tôi kích hoạt lỗi này.

InternalServerError: Error Message
   at Object.module.exports.throw 
      (/home/ayushgp/learning/koa.js/node_modules/koa/lib/context.js:91:23)
   at Object.<anonymous> (/home/ayushgp/learning/koa.js/error.js:18:13)
   at next (native)
   at onFulfilled (/home/ayushgp/learning/koa.js/node_modules/co/index.js:65:19)
   at /home/ayushgp/learning/koa.js/node_modules/co/index.js:54:5
   at Object.co (/home/ayushgp/learning/koa.js/node_modules/co/index.js:50:10)
   at Object.toPromise (/home/ayushgp/learning/koa.js/node_modules/co/index.js:118:63)
   at next (/home/ayushgp/learning/koa.js/node_modules/co/index.js:99:29)
   at onFulfilled (/home/ayushgp/learning/koa.js/node_modules/co/index.js:69:7)
   at /home/ayushgp/learning/koa.js/node_modules/co/index.js:54:5

Ngay bây giờ bất kỳ yêu cầu nào được gửi đến máy chủ sẽ dẫn đến lỗi này.