JavaScript Error Types — ประเภท Error ที่ควรรู้
JavaScript มี Error หลายประเภท แต่ละประเภทบอกต้นเหตุต่างกัน — รู้จักประเภทช่วย debug ได้เร็วขึ้น
| Error | เกิดจาก |
|---|---|
TypeError | ใช้ method บน wrong type (undefined.length) |
ReferenceError | เรียก variable ที่ไม่มี |
SyntaxError | code parse ไม่ผ่าน |
RangeError | ค่านอก valid range (new Array(-1)) |
URIError | decodeURIComponent('%') — URI ผิด format |
Custom Error class:
class NetworkError extends Error {
constructor(
message: string,
public statusCode: number,
) {
super(message);
this.name = 'NetworkError';
}
}
throw new NetworkError('Not found', 404);
Narrow ใน catch:
try {
await fetch(url);
} catch (err) {
if (err instanceof NetworkError) {
console.log(err.statusCode); // type-safe
} else if (err instanceof TypeError) {
// network failure (fetch throws TypeError ถ้า offline)
}
}
Error.cause (ES2022) ส่ง original error เป็น context: new Error('wrap', { cause: originalError }) — ช่วย trace error chain ได้โดยไม่ทำให้ stack trace หาย