Avoid throwing literals instead of an object or error type

이 페이지는 아직 영어로 제공되지 않습니다. 번역 작업 중입니다.
현재 번역 프로젝트에 대한 질문이나 피드백이 있으신 경우 언제든지 연락주시기 바랍니다.

Metadata

ID: javascript-best-practices/no-throw-literal

Language: JavaScript

Severity: Warning

Category: Best Practices

Description

This JavaScript rule advises against throwing literals such as strings, numbers, or null, and instead recommends throwing an instance of Error or a subclass of Error. Throwing an Error object helps to provide a stack trace, which can be extremely beneficial for debugging purposes. Stack traces provide a detailed report of the sequence of nested function calls that led to the error being thrown, along with contextual information for each frame.

The importance of this rule lies in its capacity to improve debugging and error handling. When a literal is thrown, the only information available is the literal itself. On the other hand, when an Error object is thrown, you get a lot more context about where and why the error occurred. This can save a significant amount of time during the debugging process.

Non-Compliant Code Examples

throw "err";

throw 1;

throw undefined;

throw null;

throw "err: " + new Error();

throw `${new Error()}`

Compliant Code Examples

throw new Error();

throw new Error("err");

const err = new Error("err");
throw err;

try {
    throw new Error("err");
} catch (e) {
    throw e;
}
PREVIEWING: brett.blue/embedded-collector-release