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; // 알 수 없는 에러는 다시 던지기 함
}
}