에러는 생성자를 가지는 객체이기 때문에 얼마든지 객체처럼 다룰 수 있다.
에러 객체 상속
class authenticationError extends Error {
constructor(message) {
super(message);
this.name = "authenticationError";
this.favoriteSnack = "chitos";
}
}
const a = new authenticationError("cause err");
console.log(a.favoriteSnack);
인증 에러라는 새로운 클래스를 생성하고 Error 객체를 상속받은 후
부모의 멤버변수인 message를 생성자에 집어넣고 커스텀 하고 싶은 속성인
name과 favoriteSnack을 정의했다.
해당 생성자로 생성된 변수인 a는 에러 메시지와 새롭게 정의한 변수들에 접근할 수 있게 된다.
에러 객체 오버라이딩
class DBError extends Error {
constructor(message) {
super(message);
this.name = "DBErr";
this.message = "user dont need to see it";
}
}
const dbErr = new DBError("stuck");
dbErr.message;
이번에는 DB만을 위한 에러 객체를 새롭게 정의하고
상속받은 에러 객체의 멤버 변수인 message를 새롭게 정의했다.
이번에도 에러 생성자처럼 dbErr변수를 생성한 후 message에 접근해 보면
원래의 에러 생성자라면 message에 stuck이 담겨야 맞는데
새롭게 오버라이딩 한 message의 문자열이 대신 출력된다.
해당 인스턴스 객체는 DBError의 인스턴스 이기도 하며
에러 객체의 인스턴스 이기도 하다.
이처럼 특정 상황에서만 사용되는 에러 객체를 커스텀할 수 있다.
'Front-end > JavaScript' 카테고리의 다른 글
JS 에러 핸들링 4편 - async error handling (0) | 2023.08.09 |
---|---|
JS 에러 핸들링 3편 - promise catch (0) | 2023.07.31 |
JS 에러 핸들링 2편 - catch (0) | 2023.07.29 |
JS 에러 핸들링 1편 - Error 생성자 (0) | 2023.07.28 |
JS 모듈 4편 - ES6 module (0) | 2023.07.25 |