Error Handling ใน Koa.js

การจัดการข้อผิดพลาด (Error Handling) ใน Koa.js นั้นมีหลายวิธีที่คุณสามารถทำได้ ต่อไปนี้คือวิธีการจัดการข้อผิดพลาดที่พบบ่อยใน Koa.js:

  1. try…catch: คุณสามารถใช้คำสั่ง try...catch เพื่อจับข้อผิดพลาดภายใน middleware และทำการจัดการข้อผิดพลาดได้ตามต้องการ ตัวอย่างเช่น:
1
2
3
4
5
6
7
8
9
10
11
12
13
app.use(async (ctx, next) => {
try {
await next(); // ส่งข้อผิดพลาดไปยัง middleware ถัดไป
} catch (error) {
ctx.status = error.status || 500;
ctx.body = { error: error.message };
}
});

app.use(async (ctx, next) => {
// จุดที่อาจเกิดข้อผิดพลาด
throw new Error("มีข้อผิดพลาดบางอย่างเกิดขึ้น");
});
  1. การใช้ Middleware สำหรับ Error Handling: คุณสามารถสร้าง middleware แบบเฉพาะเพื่อจัดการข้อผิดพลาด โดยให้มีตัวแยกข้อผิดพลาดอย่างชัดเจน ตัวอย่าง:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
app.use(async (ctx, next) => {
try {
await next(); // ส่งข้อผิดพลาดไปยัง middleware ถัดไป
} catch (error) {
ctx.status = error.status || 500;
ctx.body = { error: error.message };
}
});

// Middleware สำหรับจัดการข้อผิดพลาด
app.use(async (ctx, next) => {
// จุดที่อาจเกิดข้อผิดพลาด
throw new Error("มีข้อผิดพลาดบางอย่างเกิดขึ้น");
});

// Middleware สำหรับจัดการข้อผิดพลาดแบบไม่คาดคิด
app.use(async (ctx, next) => {
try {
await next();
} catch (error) {
// จัดการข้อผิดพลาดแบบไม่คาดคิดที่นี่
}
});
  1. การใช้ ctx.throw(): Koa.js มีเมธอด ctx.throw(status, message) ที่คุณสามารถใช้ในการสร้างและส่งข้อผิดพลาดไปยัง client ได้โดยตรง:
1
2
3
4
5
6
7
app.use(async (ctx, next) => {
try {
await next(); // ส่งข้อผิดพลาดไปยัง middleware ถัดไป
} catch (error) {
ctx.throw(500, "เกิดข้อผิดพลาดภายในเซิร์ฟเวอร์");
}
});

การจัดการข้อผิดพลาดใน Koa.js นั้นควรทำให้ระบบแสดงข้อผิดพลาดอย่างเหมาะสมและป้องกันการรั่วข้อมูลรายละเอียดของข้อผิดพลาดออกไปยัง client โดยไม่จำเป็น คุณสามารถแก้ไขและปรับแต่งการจัดการข้อผิดพลาดตามความต้องการของแอปพลิเคชันของคุณได้.