Baseline Widely available *
Error
ãªãã¸ã§ã¯ãã¯ãå®è¡æã¨ã©ã¼ãçºçããæã«çºçãã¾ãã Error
ãªãã¸ã§ã¯ãã¯ãã¦ã¼ã¶ã¼å®ç¾©ã®ä¾å¤ã®åºåºãªãã¸ã§ã¯ãã¨ãã¦ä½¿ç¨ãããã¨ãã§ãã¾ããæ¨æºã®çµã¿è¾¼ã¿ã¨ã©ã¼åã«ã¤ãã¦ã¯ä¸è¨ãåç
§ãã¦ãã ããã
å®è¡æã¨ã©ã¼ãçºçããã¨ãæ°ãã Error
ãªãã¸ã§ã¯ããçæããã¹ãã¼ããã¾ãã
Error
ã¯ã·ãªã¢ã©ã¤ãºå¯è½ãªãã¸ã§ã¯ããªã®ã§ã structuredClone()
ã§è¤è£½ããããã¯ã¼ã«ã¼éã§ postMessage()
ã使ç¨ãã¦ã³ãã¼ããããããã¨ãã§ãã¾ãã
JavaScript ã«ã¯ãä¸è¬ç㪠Error
ã³ã³ã¹ãã©ã¯ã¿ã¼ã®ä»ã«ã䏿 ¸ã¨ãªãä»ã®ã¨ã©ã¼ã³ã³ã¹ãã©ã¯ã¿ã¼ãããã¾ããã¯ã©ã¤ã¢ã³ãå´ã®ä¾å¤ã«ã¤ãã¦ã¯ãä¾å¤å¦çæãåç
§ãã¦ãã ããã
EvalError
ã°ãã¼ãã«é¢æ° eval()
ã«é¢ãã¦çºçããã¨ã©ã¼ã表ãã¤ã³ã¹ã¿ã³ã¹ãçæãã¾ãã
RangeError
æ°å¤å¤æ°ã¾ãã¯å¼æ°ãããã®æå¹ç¯å²å¤ã§ããå ´åã«çºçããã¨ã©ã¼ã表ãã¤ã³ã¹ã¿ã³ã¹ãçæãã¾ãã
ReferenceError
䏿£ãªåç §ããåç §å ã®å¤ãåå¾ããæã«çºçããã¨ã©ã¼ã表ãã¤ã³ã¹ã¿ã³ã¹ãçæãã¾ãã
SyntaxError
æ§æã¨ã©ã¼ã表ãã¤ã³ã¹ã¿ã³ã¹ãçæãã¾ãã
TypeError
夿°ã¾ãã¯å¼æ°ã®åãæå¹ã§ãªãå ´åã«çºçããã¨ã©ã¼ã表ãã¤ã³ã¹ã¿ã³ã¹ãçæãã¾ãã
URIError
encodeURI()
ã¾ã㯠decodeURI()
ã«ä¸æ£ãªå¼æ°ã渡ãããæã«çºçããã¨ã©ã¼ã表ãã¤ã³ã¹ã¿ã³ã¹ãçæãã¾ãã
AggregateError
å¦çããè¤æ°ã®ã¨ã©ã¼ãå ±åããå¿
è¦ãããå ´åï¼ä¾ãã° Promise.any()
ï¼ã«è¤æ°ã®ã¨ã©ã¼ãåä¸ã®ãªãã¸ã§ã¯ãã¨ãã¦è¡¨ç¾ããã¤ã³ã¹ã¿ã³ã¹ãçæãã¾ãã
InternalError
"too much recursion" (æ·±ãããå帰) ãªã©ãJavaScript ã¨ã³ã¸ã³ã§å é¨ã¨ã©ã¼ãçºçããæã«çºçããã¨ã©ã¼ã表ãã¤ã³ã¹ã¿ã³ã¹ãçæãã¾ãã
Error()
æ°ãã Error
ãªãã¸ã§ã¯ããçæãã¾ãã
Error.captureStackTrace()
鿍æº
æ¨æºå¤ã® V8 ã®é¢æ°ã§ã Error ã¤ã³ã¹ã¿ã³ã¹ã« stack
ããããã£ãçæãã¾ãã
Error.stackTraceLimit
鿍æº
æ¨æºå¤ã® V8 ã®æ°å¤ããããã£ã§ãã¨ã©ã¼ã®ã¹ã¿ãã¯ãã¬ã¼ã¹ã«å«ããã¹ã¿ãã¯ãã¬ã¼ã ã®æ°ãå¶éãã¾ãã
Error.prepareStackTrace()
éæ¨æº çç¥å¯
æ¨æºå¤ã® V8 ã®é¢æ°ã§ãï¼ã¦ã¼ã¶ã¼ã³ã¼ãããæä¾ãããå ´åã«ï¼çºçããä¾å¤ã«å¯¾ã㦠V8 Javascript ã¨ã³ã¸ã³ã«ãã£ã¦å¼ã³åºãããã¦ã¼ã¶ã¼ã¯ã¹ã¿ãã¯ãã¬ã¼ã¹ãç¬èªã«ãã©ã¼ããããããã¨ãã§ãã¾ãã
ãããã®ããããã£ã¯ Error.prototype
ã§å®ç¾©ããã¦ããããã¹ã¦ã® Error
ã¤ã³ã¹ã¿ã³ã¹ã§å
±æããã¾ãã
Error.prototype.constructor
ãã®ã¤ã³ã¹ã¿ã³ã¹ãªãã¸ã§ã¯ãã使ããã³ã³ã¹ãã©ã¯ã¿ã¼é¢æ°ã§ãã Error
ã¤ã³ã¹ã¿ã³ã¹ã®å ´åãåæå¤ã¯ Array
ã³ã³ã¹ãã©ã¯ã¿ã¼ã§ãã
Error.prototype.name
ã¨ã©ã¼ã®åç§°ã表ãã¾ããError.prototype.name
ã®å ´åãåæå¤ã¯ "Error"
ã§ãã TypeError
ã SyntaxError
ã®ãããªãµãã¯ã©ã¹ã¯åèªã® name
ããããã£ãæä¾ãã¾ãã
Error.prototype.stack
鿍æº
ã¹ã¿ãã¯ãã¬ã¼ã¹ã®ããã®éæ¨æºã®ããããã£ã
ãããã®ããããã£ã¯ããããã® Error
ã¤ã³ã¹ã¿ã³ã¹èªèº«ã®ããããã£ã§ãã
cause
ç¾å¨ã®ã¨ã©ã¼ããªãçºçããã®ãã示ãã¨ã©ã¼ã®åå ãéå¸¸ã¯ææããå¥ã®ã¨ã©ã¼ãã¦ã¼ã¶ã¼ãçæãã Error
ãªãã¸ã§ã¯ãã§ã¯ãã³ã³ã¹ãã©ã¯ã¿ã¼ã®ç¬¬äºå¼æ°ã§ cause
ããããã£ã¨ãã¦æ¸¡ãããå¤ã
Error.prototype.columnNumber
æ¨æºå¤ã® Mozilla ã®ããããã£ã§ããã®ã¨ã©ã¼ãçºçããè¡å ã®æ¡çªå·ã§ãã
Error.prototype.fileName
æ¨æºå¤ã® Mozilla ã®ããããã£ã§ããã®ã¨ã©ã¼ãçºçãããã¡ã¤ã«ã¸ã®ãã¹ã§ãã
Error.prototype.lineNumber
æ¨æºå¤ã® Mozilla ã®ããããã£ã§ããã®ã¨ã©ã¼ãçºçãããã¡ã¤ã«å ã®è¡çªå·ã§ãã
Error.prototype.message
ã¨ã©ã¼ã¡ãã»ã¼ã¸ã
Error.prototype.toString()
æå®ãããªãã¸ã§ã¯ãã表ãæååãè¿ãã¾ããObject.prototype.toString()
ã¡ã½ããã䏿¸ããã¾ãã
é常ãthrow
ãã¼ã¯ã¼ãã使ãæå³çã«ã¨ã©ã¼ãçºçãã㦠Error
ãªãã¸ã§ã¯ããçæãã¾ãã try...catch
æ§æã使ç¨ãã¦ã¨ã©ã¼ãå¦çãã¦ãã ãã:
try {
throw new Error("Whoops!");
} catch (e) {
console.error(`${e.name}: ${e.message}`);
}
ç¹å®ã®ã¨ã©ã¼ãå¦çãã
instanceof
ã§ã¨ã©ã¼åããã¹ããããã¨ã«ãããç¹å®ã®ã¨ã©ã¼åã ããé¸ãã§å¦çã§ãã¾ã:
try {
foo.bar();
} catch (e) {
if (e instanceof EvalError) {
console.error(`${e.name}: ${e.message}`);
} else if (e instanceof RangeError) {
console.error(`${e.name}: ${e.message}`);
}
// ãªã©
else {
// ãããã®å ´åã«ããããããªãå ´åãErrorãæªå¯¾å¦ã®ã¾ã¾ã«ãã
throw e;
}
}
é¡ä¼¼ããã¨ã©ã¼ã¨åºå¥ãã
ç°ãªã対å¦ãå¿ è¦ãªåå ã§å¤±æããã«ãããããããã³ã¼ããããã¯ãé常ã«ããä¼¼ãã¨ã©ã¼ï¼ããªãã¡åãåãã¡ãã»ã¼ã¸ï¼ãæãããã¨ãããã¾ãã
çºçããå
ã®ã¨ã©ã¼ã管çä¸ã«ãªãå ´åãã¨ã©ã¼ãææãã¦ãã詳細ãªã¡ãã»ã¼ã¸ãæã¤æ°ãã Error
ãªãã¸ã§ã¯ããæãããã¨ãä¸ã¤ã®é¸æè¢ã¨ãªãã¾ãã å
ã®ã¨ã©ã¼ã¯æ°ãã Error
ã®ã³ã³ã¹ãã©ã¯ã¿ã¼ã® options
ãã©ã¡ã¼ã¿ã¼ã® cause
ããããã£ã«æ¸¡ãã¹ãã§ããããã«ãã£ã¦ãä¸ä½ã® try/catch ãããã¯ãå
ã®ã¨ã©ã¼ã¨ã¹ã¿ãã¯ãã¬ã¼ã¹ãå©ç¨ã§ãããã¨ãä¿è¨¼ãã¾ãã
以ä¸ã®ä¾ã¯ãä¼¼ãã¨ã©ã¼ã§å¤±æãã 2 ã¤ã®ã¡ã½ããã示ãã¦ãã¾ãï¼doFailSomeWay()
㨠doFailAnotherWay()
ï¼:
function doWork() {
try {
doFailSomeWay();
} catch (err) {
throw new Error("Failed in some way", { cause: err });
}
try {
doFailAnotherWay();
} catch (err) {
throw new Error("Failed in another way", { cause: err });
}
}
try {
doWork();
} catch (err) {
switch (err.message) {
case "Failed in some way":
handleFailSomeWay(err.cause);
break;
case "Failed in another way":
handleFailAnotherWay(err.cause);
break;
}
}
ã¡ã¢: ããããªããã©ã¤ãã©ãªãå¶ä½ãã¦ãããªããå©ç¨è ã«ã¨ã©ã¼ã¡ãã»ã¼ã¸ããã¼ã¹ãããããé¡ããããããçºçããã¨ã©ã¼ãåºå¥ããããã« Error ã® cause ã使ç¨ãã¹ãã§ããä¾ã«ã¤ãã¦ã¯ Error ã® cause ãã¼ã¸ ãã覧ãã ããã
ãµãã¯ã©ã¹ã®ã³ã³ã¹ãã©ã¯ã¿ã¼ã super()
ãå¼ã³åºãã¨ãã« options
ãã©ã¡ã¼ã¿ã¼ã渡ãã°ãç¬èªã®ã¨ã©ã¼åã cause
ããããã£ãå©ç¨ã§ãã¾ããåºåºã¯ã©ã¹ã®ã³ã³ã¹ãã©ã¯ã¿ã¼ Error()
㯠options.cause
ãèªã¿åã£ã¦ãæ°ããã¨ã©ã¼ã®ã¤ã³ã¹ã¿ã³ã¹ã« cause
ããããã£ãå®ç¾©ãã¾ãã
class MyError extends Error {
constructor(message, options) {
// "cause" ããããã£ãè¨å®ããããã«ç¬¬äºå¼æ°ã« `options` ãæ¸¡ãå¿
è¦ãããã
super(message, options);
}
}
console.log(new MyError("test", { cause: new Error("cause") }).cause);
// Error: cause
ç¬èªã®ã¨ã©ã¼å
Error
ããæ´¾çããç¬èªã®ã¨ã©ã¼åãå®ç¾©ã㦠throw new CustomError()
ãã§ããããã«ããinstanceof CustomError
ã§ä¾å¤ãã³ãã©ã¼å
ã®ã¨ã©ã¼ã®ç¨®é¡ã確èªãããã§ãããããããè¡ãä¸è¬çãªæ¹æ³ã®å®ä¾ã以ä¸ã«ç¤ºãã¾ãã
StackOverflow ã®çªã£è¾¼ãã è°è«ã "What's a good way to extend Error in JavaScript?" ãåç §ãã¦ãã ããã
è¦å: çµã¿è¾¼ã¿ã®ãµãã¯ã©ã¹åã¯ãES6 ããå¤ãã³ã¼ãã«ç¢ºå®ã«ãã©ã³ã¹ãã¤ã«ã§ããããã§ã¯ããã¾ããããªããªãã
Reflect.construct()
ã使ããã«ç¹å®ã®new.target
ãæã¤åºåºã¯ã©ã¹ãæ§ç¯ããææ®µããªãããã§ãã追å ã®è¨å®ãè¡ãããã³ã³ã¹ãã©ã¯ã¿ã¼ã®æå¾ã§Object.setPrototypeOf(this, CustomError.prototype)
ãæåã§å¼ã¶å¿ è¦ãããã¾ããããããªãã¨ãæ§ç¯ãããã¤ã³ã¹ã¿ã³ã¹ã¯CustomError
ã®ã¤ã³ã¹ã¿ã³ã¹ã«ãªãã¾ããã詳ãã㯠the TypeScript FAQ ãã覧ãã ããã
ã¡ã¢: ES2015 ã¯ã©ã¹ã使ç¨ããå ´åãä¸é¨ã®ãã©ã¦ã¶ã¼ã¯ã¹ã¿ãã¯ãã¬ã¼ã¹ä¸ã« CustomError
ã³ã³ã¹ãã©ã¯ã¿ã¼ãå«ãã¾ãã
class CustomError extends Error {
constructor(foo = "bar", ...params) {
// 親ã®ã³ã³ã¹ãã©ã¯ã¿ã¼ã«ï¼ãã³ãã¼åºæã®ãã®ãå«ãã¦ï¼æ®ãã®å¼æ°ã渡ã
super(...params);
// ã¨ã©ã¼ãçºçããç®æã®æ£ããã¹ã¿ãã¯ãã¬ã¼ã¹ãç¶æãã ï¼V8ã§ã®ã¿æå¹ï¼
if (Error.captureStackTrace) {
Error.captureStackTrace(this, CustomError);
}
this.name = "CustomError";
// ã«ã¹ã¿ã ã®ãããã°æ
å ±
this.foo = foo;
this.date = new Date();
}
}
try {
throw new CustomError("baz", "bazMessage");
} catch (e) {
console.error(e.name); // CustomError
console.error(e.foo); // baz
console.error(e.message); // bazMessage
console.error(e.stack); // stacktrace
}
仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§ é¢é£æ
å ±
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4