Error
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since 2015ë 7ì.
* Some parts of this feature may have varying levels of support.
Error ê°ì²´ë ë°íì ì¤ë¥ê° ë°ìíì ë ëì ¸ì§ëë¤.
Error ê°ì²´ë¥¼ ì¬ì©ì ì§ì ìì¸ì ê¸°ë° ê°ì²´ë¡ ì¬ì©í ìë ììµëë¤.
ìë íì¤ ë´ì¥ ì¤ë¥ ì íì ì°¸ê³ íì¸ì.
ì¤ëª
ë°íì ì¤ë¥ë ìë¡ì´ Error ê°ì²´ë¥¼ ìì±íê³ ëì§ëë¤.
ì¤ë¥ ì í
JavaScriptìë ì¼ë°ì ì¸ Error ìì±ì ì¸ìë ì¬ë¬ ê°ì ì¤ì ì¤ë¥
ìì±ìê° ì¡´ì¬í©ëë¤. í´ë¼ì´ì¸í¸ì¸¡ ìì¸ì ëí´ìë
ì ì´ íë¦ê³¼ ìë¬ ì²ë¦¬ë¥¼ ì°¸ê³ íì¸ì.
EvalError-
ì ì í¨ì
eval()ìì ë°ìíë ì¤ë¥ì ì¸ì¤í´ì¤ë¥¼ ìì±í©ëë¤. RangeError-
ì«ì ë³ìë 매ê°ë³ìê° ì í¨í ë²ì를 ë²ì´ë¬ìì ëíë´ë ì¤ë¥ ì¸ì¤í´ì¤ë¥¼ ìì±í©ëë¤.
ReferenceError-
ì못ë 참조를 íìì ëíë´ë ì¤ë¥ ì¸ì¤í´ì¤ë¥¼ ìì±í©ëë¤.
SyntaxError-
eval()ì´ ì½ë를 ë¶ìíë ì¤ ì못ë 구문ì ë§ë¬ìì ëíë´ë ì¤ë¥ ì¸ì¤í´ì¤ë¥¼ ìì±í©ëë¤. TypeError-
ë³ìë 매ê°ë³ìê° ì í¨í ìë£íì´ ìëì ëíë´ë ì¤ë¥ ì¸ì¤í´ì¤ë¥¼ ìì±í©ëë¤.
URIError-
encodeURI()ëdecodeURl()í¨ìì ë¶ì ì í 매ê°ë³ì를 ì ê³µíì ë ë°ìíë ì¤ë¥ì ì¸ì¤í´ì¤ë¥¼ ìì±í©ëë¤. AggregateError-
íëì ëìì´ ì¬ë¬ ê°ì ì¤ë¥ ë°ììí¤ë ê²½ì°(ì:
Promise.any()) ì¬ë¬ ì¤ë¥ë¥¼ íëì ì¤ë¥ë¡ ê°ì¸ë ì¸ì¤í´ì¤ë¥¼ ë§ëëë¤. InternalError-
JavaScript ìì§ì ë´ë¶ìì ì¤ë¥ê° ë°ìíìì ëíë´ë ì¤ë¥ ì¸ì¤í´ì¤ë¥¼ ìì±í©ëë¤.
ìì±ì
Error()-
ìë¡ì´
Errorê°ì²´ë¥¼ ë§ëëë¤.
ì ì ë©ìë
Error.captureStackTrace()-
ì¤ë¥ ì¸ì¤í´ì¤ì
stackìì±ì ë§ëë ë¹íì¤ V8 í¨ì
ì¸ì¤í´ì¤ ìì±
Error.prototype.message-
ì¤ë¥ ë©ìì§
Error.prototype.name-
ì¤ë¥ ì´ë¦
Error.prototype.description-
ì¤ë¥ë¥¼ ì¤ëª í기 ìí ë¹íì¤ ë§ì´í¬ë¡ìíí¸ ìì±.
messageì ë¹ì·í©ëë¤. Error.prototype.number-
ì¤ë¥ ë²í¸ë¥¼ ìí ë¹íì¤ ë§ì´í¬ë¡ìíí¸ ìì±
Error.prototype.fileName-
í´ë¹ ì¤ë¥ë¥¼ ë°ììí¨ íì¼ì ê²½ë¡ë¥¼ íìí기 ìí ë¹íì¤ Mozilla ìì±
Error.prototype.lineNumber-
í´ë¹ ì¤ë¥ë¥¼ ë°ììí¨ íì¼ì ì¤ ë²í¸ë¥¼ íìí기 ìí ë¹íì¤ Mozilla ìì±
Error.prototype.columnNumber-
í´ë¹ ì¤ë¥ë¥¼ ë°ììí¨ íì¼ì 칸 ë²í¸ë¥¼ íìí기 ìí ë¹íì¤ Mozilla ìì±
Error.prototype.stack-
ì¤í ì¶ì ì ìí ë¹íì¤ Mozilla ìì±
ì¸ì¤í´ì¤ ë©ìë
Error.prototype.toString()-
ëª ìë ê°ì²´ë¥¼ ííí기 ìí 문ìì´ì ë°íí©ëë¤.
Object.prototype.toString()ë©ìë를 ì¤ë²ë¼ì´ëí©ëë¤..
ìì
>ì¼ë°ì ì¸ ì¤ë¥ ëì§ê¸°
Error ê°ì²´ë¥¼ ìì±í íì ëê° throw í¤ìë를 ì´ì©í´ ëì§ëë¤. try...catch 구문ì ì´ì©íì¬ ì¤ë¥ë¥¼ ì²ë¦¬í ì ììµëë¤.
try {
throw new Error("ì´ë°!");
} catch (e) {
alert(e.name + ": " + e.message);
}
í¹ì ì¤ë¥ ì²ë¦¬í기
ì¤ë¥ì constructor ìì±ì ì´ì©í´
ì íì íë³, í¹ì ì¤ë¥ë§ ì²ë¦¬í ì ììµëë¤. ë§ì½ ìµì Javascript ìì§ìì
ëìíë ì½ë를 ìì±íë¤ë©´ instanceof í¤ìë를 ì´ì©í ìë ììµëë¤.
try {
foo.bar();
} catch (e) {
if (e instanceof EvalError) {
alert(e.name + ": " + e.message);
} else if (e instanceof RangeError) {
alert(e.name + ": " + e.message);
}
// ... etc
}
ì¬ì©ì ì ì ìë¬ íì
throw new MyError() ì´í instanceof MyErrorë¡ ì§ì
ë§ë ì¤ë¥ë¥¼ íë³í ì ìëë¡ Errorì íì ì¤ë¥ ì ì를
ê³ ë ¤í´ë³´ì¸ì. ë ê¹ëíê³ ì¼ê´ì ì¸ ì¤ë¥ ì²ë¦¬ ì½ë를 ìì±í ì
ììµëë¤. StackOverflowì "What's a good way to extend Error in JavaScript?"를 ë°©ë¬¸í´ ì¬ë ìë ë
¼ì를 ì½ì´ë³´ì¸ì.
ES6 ì¬ì©ì ì ì ì¤ë¥ í´ëì¤
ê²½ê³ :
Babel ë²ì 7 미ë§ì¼ë¡ ì¬ì©ì ì ì ì¤ë¥ í´ëì¤ë¥¼ ì²ë¦¬íë ¤ë©´ Object.defineProperty() ë©ìë를 ì¬ì©í´ ì ìí´ì¼ë§ í©ëë¤. ê·¸ë ì§ ìì¼ë©´ ì¤ëë Babel ë° ë¤ë¥¸ í¸ëì¤íì¼ë¬ê° ì¶ê° ì¤ì ìì´ ì½ë를 ì²ë¦¬í ì ììµëë¤.
ì°¸ê³ :
ES2015 í´ëì¤ë¥¼ ì¬ì©í ë, ì¼ë¶ ë¸ë¼ì°ì ë CustomError ìì±ì를 ì¤í í¸ë ì´ì¤ì í¬í¨í©ëë¤.
class CustomError extends Error {
constructor(foo = "bar", ...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, CustomError);
}
// Custom debugging information
this.foo = foo;
this.date = new Date();
}
}
try {
throw new CustomError("baz", "bazMessage");
} catch (e) {
console.log(e.foo); //baz
console.log(e.message); //bazMessage
console.log(e.stack); //stacktrace
}
ES5 ì¬ì©ì ì ì ì¤ë¥ ê°ì²´
íë¡í íì
ì ì¸ì ì¬ì©íë©´ 모ë ë¸ë¼ì°ì ê° CustomError ìì±ì를
ì¤í í¸ë ì´ì¤ì í¬í¨í©ëë¤.
function CustomError(foo, message, fileName, lineNumber) {
var instance = new Error(message, fileName, lineNumber);
instance.foo = foo;
Object.setPrototypeOf(instance, Object.getPrototypeOf(this));
if (Error.captureStackTrace) {
Error.captureStackTrace(instance, CustomError);
}
return instance;
}
CustomError.prototype = Object.create(Error.prototype, {
constructor: {
value: Error,
enumerable: false,
writable: true,
configurable: true,
},
});
if (Object.setPrototypeOf) {
Object.setPrototypeOf(CustomError, Error);
} else {
CustomError.__proto__ = Error;
}
try {
throw new CustomError("baz", "bazMessage");
} catch (e) {
console.log(e.foo); //baz
console.log(e.message); //bazMessage
}
ëª ì¸ì
| Specification |
|---|
| ECMAScript® 2027 Language Specification > # sec-error-objects > |