nodejs
Node.js에서 디버깅을 하다 보면 종종 스택 트레이스가 너무 복잡하거나 불필요한 정보까지 포함되어 있어 실제 문제를 빠르게 찾기 어려운 경우가 있습니다. 이런 상황에서 Node.js(V8 엔진 기반)가 제공하는
우리가 자주 사용하는 Error 객체의 스택 트레이스는 불필요한 정보를 포함할 수 있지만, 이 메서드를 사용하면 명확하고 간결한 스택을 유지할 수 있습니다. 또한, 스택 트레이스에서 에러 클래스를 제외하고 실제 오류가 발생한 위치만 추적이 가능합니다.
아래는 커스텀 에러 클래스인
class ServerError extends Error {
constructor(message: string) {
super(message);
if (Error.captureStackTrace) {
Error.captureStackTrace(this, ServerError);
}
}
}
function throwError() {
throw new ServerError("Something went wrong!");
}
try {
throwError();
} catch (err) {
console.error(err.stack);
}
ServerError: Something went wrong!
at new ServerError (/path/to/code.js:5:5) (불필요한 정보)
at throwError (/path/to/code.js:12:9)
at Object.<anonymous> (/path/to/code.js:16:3)
ServerError: Something went wrong!
at throwError (/path/to/code.js:12:9) (실제 오류 발생 지점)
at Object.<anonymous> (/path/to/code.js:16:3)
이렇게 불필요한 클래스 호출 정보가 사라져 가독성과 디버깅 효율이 높아집니다. 이 메서드는 Node.js(V8 엔진 환경)에서만 지원됩니다. 브라우저 환경에서는 사용 불가할 수 있습니다. 모든 Error 클래스에 반드시 적용할 필요는 없으며, 명확한 디버깅이 필요한 상황에 선택적으로 활용하면 됩니다.