ข้ามไปเนื้อหาหลัก

JavaScript Error Types — ประเภท Error ที่ควรรู้

JavaScript มี Error หลายประเภท แต่ละประเภทบอกต้นเหตุต่างกัน — รู้จักประเภทช่วย debug ได้เร็วขึ้น

Errorเกิดจาก
TypeErrorใช้ method บน wrong type (undefined.length)
ReferenceErrorเรียก variable ที่ไม่มี
SyntaxErrorcode parse ไม่ผ่าน
RangeErrorค่านอก valid range (new Array(-1))
URIErrordecodeURIComponent('%') — 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 หาย