[js] custom Error
js 에서 제공하는 Error
클래스는 기본적으로 아래와 같이 문자열을 인자로 받는다
try{
throw new Error('error message')
}catch(e){
console.error(e)
}
/* result is
Error: error message
at <anonymous>:2:9
*/
객체타입을 사용해 에러메세지를 입체적으로 정의하고자 한다면 Error
클래스를 아래와 같이 확장하여 사용한다.
class Err extends Error {
constructor(args, ...params) {
// Pass remaining arguments (including vendor specific ones) to parent constructor
super(...params)
// Maintains proper stack trace for where our error was thrown (only available on V8)
if(Error.captureStackTrace){
Error.captureStackTrace(this, Err)
}
Object.assign(this, args)
}
}
try{
throw new Err({
code: 1001,
message: 'some title',
description: 'blabla',
})
}catch(e){
console.log({...e})
console.error(e)
}
/*
{code: 1001, message: "some title", description: "blabla"}
Error: some title
at <anonymous>:15:9
*/