Koa.js - การจัดการข้อผิดพลาด
การจัดการข้อผิดพลาดมีส่วนสำคัญในการสร้างเว็บแอปพลิเคชัน Koa ใช้มิดเดิลแวร์เพื่อการนี้เช่นกัน
ใน Koa คุณเพิ่มมิดเดิลแวร์ที่ทำ try { 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);
เราได้สร้างข้อผิดพลาดโดยเจตนาในโค้ดด้านบนและกำลังจัดการข้อผิดพลาดในการดักจับมิดเดิลแวร์แรกของเรา จากนั้นจะถูกส่งไปยังคอนโซลของเราและส่งเป็นการตอบกลับไปยังไคลเอนต์ของเรา ต่อไปนี้เป็นข้อความแสดงข้อผิดพลาดที่เราได้รับเมื่อเรียกข้อผิดพลาดนี้
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
ตอนนี้คำขอใด ๆ ที่ส่งไปยังเซิร์ฟเวอร์จะทำให้เกิดข้อผิดพลาดนี้