Обработка ошибок играет важную роль в создании веб-приложений. Коа также использует промежуточное программное обеспечение для этой цели.
В Koa вы добавляете промежуточное программное обеспечение, которое пытается {yield next} как одно из первых промежуточных программ. Если мы встречаем какую-либо ошибку в нисходящем направлении, мы возвращаемся к соответствующему предложению catch и обрабатываем здесь ошибку. Например —
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);
Мы намеренно создали ошибку в приведенном выше коде и обрабатываем ее в блоке catch нашего первого промежуточного программного обеспечения. Затем он отправляется на нашу консоль, а также отправляется в качестве ответа нашему клиенту. Ниже приведено сообщение об ошибке, которое мы получаем, когда запускаем эту ошибку.
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
Прямо сейчас любой запрос, отправленный на сервер, приведет к этой ошибке.