Skip to content

JavaScript:Error

Error 객체는 런타임 오류가 발생했을 때 던져집니다. Error 객체를 사용자 지정 예외의 기반 객체로 사용할 수도 있습니다.

Custom Error

그 전에 먼저 잠시 슈도 코드로 Error 클래스가 어떻게 생겼는지 살펴보겠습니다.

// 자바스크립트 자체 내장 에러 클래스 Error의 '슈도 코드'
class Error {
  constructor(message) {
    this.message = message;
    this.name = "Error"; // (name은 내장 에러 클래스마다 다릅니다.)
    this.stack = <call stack>;  // stack은 표준은 아니지만, 대다수 환경이 지원합니다.
  }
}

이제 ValidationError에서 Error를 상속받아보겠습니다.

class ValidationError extends Error {
  constructor(message) {
    super(message); // (1)
    this.name = "ValidationError"; // (2)
  }

  // 명시된 객체를 표현하기 위한 문자열을 반환합니다. Object.prototype.toString() 메서드를 오버라이드합니다.. 
  // https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Error
  toString() {
    return "ValidationError";
  }

Example

try {
  // ...
  readUser()  // 잠재적 에러 발생처
  // ...
} catch (err) {
  if (err instanceof ValidationError) {
    // validation 에러 처리
  } else if (err instanceof SyntaxError) {
    // 문법 에러 처리
  } else {
    throw err; // 알 수 없는 에러는 다시 던지기 함
  }
}

See also

Favorite site