Koa.js - Hata İşleme
Hata işleme, web uygulamaları oluşturmada önemli bir rol oynar. Koa bu amaçla da ara katman yazılımı kullanır.
Koa'da, bunu yapan bir ara yazılım eklersiniz. try { yield next }ilk ara yazılımlardan biri olarak. Aşağı akışta herhangi bir hatayla karşılaşırsak, ilgili catch cümlesine geri döner ve hatayı burada ele alırız. Örneğin -
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);
Yukarıdaki kodda kasıtlı olarak bir hata oluşturduk ve hatayı ilk ara katman yazılımımızın yakalama bloğunda ele alıyoruz. Bu daha sonra konsolumuza gönderilir ve müşterimize yanıt olarak gönderilir. Bu hatayı tetiklediğimizde aldığımız hata mesajı aşağıdadır.
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
Şu anda sunucuya gönderilen herhangi bir istek bu hatayla sonuçlanacaktır.