SuppressedError
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
SuppressedError ã¯ãå¥ã®ã¨ã©ã¼ãå¦çãã¦ããéã«çºçããã¨ã©ã¼ã表ããªãã¸ã§ã¯ãã§ããããã¯ãusing ã¾ã㯠await using ã使ç¨ãããªã½ã¼ã¹ã®ç ´æ£ä¸ã«çæããã¾ãã
AggregateError ã¨æ¯ã¹ãã¨ãSuppressedError 㯠å¥ã®ã¨ã©ã¼ã«ãã£ã¦æå¶ãããåä¸ã®ã¨ã©ã¼ã表ãã®ã«å¯¾ããAggregateError ã¯ç¡é¢ä¿ãªã¨ã©ã¼ã®ãªã¹ãã表ãã¾ãããã ããSuppressedError ãæå¶ãããã¨ã©ã¼ã®ãã§ã¼ã³ï¼e.suppressed.suppressed.suppressed...ï¼ãå«ãããã¾ããã¾ããcause ã¨ã¯æå³çã«ç°ãªãã¾ãããªããªãããã®ã¨ã©ã¼ã¯å¥ã®ã¨ã©ã¼ã«ãã£ã¦ãå¼ãèµ·ãããããã®ã§ã¯ãªããå¥ã®ã¨ã©ã¼ãå¦çãã¦ããéã«ãçºçãããããã§ãã
SuppressedError 㯠Error ã®ãµãã¯ã©ã¹ã§ãã
ã³ã³ã¹ãã©ã¯ã¿ã¼
SuppressedError()-
SuppressedErrorãªãã¸ã§ã¯ããçæãã¾ãã
ã¤ã³ã¹ã¿ã³ã¹ããããã£
ç¶æ¿å
ã® Error ããã¤ã³ã¹ã¿ã³ã¹ããããã£ãç¶æ¿ãã¾ãã
ãããã®ããããã£ã¯ SuppressedError.prototype ã«å®ç¾©ããã¦ããããã¹ã¦ã® SuppressedError ã¤ã³ã¹ã¿ã³ã¹ã§å
±æããã¾ãã
SuppressedError.prototype.constructor-
ã¤ã³ã¹ã¿ã³ã¹ãªãã¸ã§ã¯ããçæããã³ã³ã¹ãã©ã¯ã¿ã¼é¢æ°ã
SuppressedErrorã¤ã³ã¹ã¿ã³ã¹ã®å ´åãåæå¤ã¯SuppressedErrorã³ã³ã¹ãã©ã¯ã¿ã¼ã§ãã SuppressedError.prototype.name-
ã¨ã©ã¼ã®ç¨®é¡ã表ãååã
SuppressedError.prototype.nameã®åæå¤ã¯"SuppressedError"ã§ãã
ã¡ã¢:
cause 㨠suppressed ã®æå³è«ãéè¤ãããããSuppressedError 㯠cause ããããã£ãæã¡ã¾ããã
ãããã®ããããã£ã¯å SuppressedError ã¤ã³ã¹ã¿ã³ã¹ã®åºæã®ããããã£ã§ãã
error-
æå¶ã®çµæã¨ãã¦ã®ã¨ã©ã¼ã¸ã®åç §ã
suppressed-
errorã«ãã£ã¦æå¶ãããã¨ã©ã¼ã¸ã®åç §ã
ã¤ã³ã¹ã¿ã³ã¹ã¡ã½ãã
親 Error ããã¤ã³ã¹ã¿ã³ã¹ã¡ã½ãããç¶æ¿ãã¾ãã
ä¾
>SuppressedError ã®ãã£ãã
SuppressedError ã¯ããªã½ã¼ã¹ã®ç ´æ£ ä¸ã«ã¨ã©ã¼ãçºçããã¨ãã«ã¹ãã¼ããã¾ããã¨ã©ã¼ãã¹ãã¼ããã¨ã¹ã³ã¼ãã®ã¯ãªã¼ã³ã¢ãããè¡ãããã¯ãªã¼ã³ã¢ããä¸ã®å disposer ã¯ç¬èªã®ã¨ã©ã¼ãã¹ãã¼ã§ãã¾ãããããã®ã¨ã©ã¼ã¯ãã¹ã¦ SuppressedError ã¤ã³ã¹ã¿ã³ã¹ã®ãã§ã¼ã³ã«åéãããå
ã®ã¨ã©ã¼ã suppressed ããããã£ã¨ãã¦ã次㮠disposer ã«ãã£ã¦ã¹ãã¼ãããæ°ããã¨ã©ã¼ã error ããããã£ã¨ãã¦æ ¼ç´ããã¾ãã
try {
using resource1 = {
[Symbol.dispose]() {
throw new Error("resource1 ã®ç ´æ£ä¸ã«ã¨ã©ã¼ãçºçãã¾ãã");
},
};
using resource2 = {
[Symbol.dispose]() {
throw new Error("resource2 ã®ç ´æ£ä¸ã«ã¨ã©ã¼ãçºçãã¾ãã");
},
};
throw new Error("å
ã®ã¨ã©ã¼");
} catch (e) {
console.log(e instanceof SuppressedError); // true
console.log(e.message); // "ç ´æ£ä¸ã«ã¨ã©ã¼ãæå¶ããã¾ãã"
console.log(e.name); // "SuppressedError"
console.log(e.error); // Error: resource1 ã®ç ´æ£ä¸ã«ã¨ã©ã¼ãçºçãã¾ãã
console.log(e.suppressed); // SuppressedError: ç ´æ£ä¸ã«ã¨ã©ã¼ãæå¶ããã¾ãã
console.log(e.suppressed.error); // Error: resource2 ã®ç ´æ£ä¸ã«ã¨ã©ã¼ãçºçãã¾ãã
console.log(e.suppressed.suppressed); // Error: å
ã®ã¨ã©ã¼
}
ãã§ã¼ã³ã¯æ¬¡ã®ããã«ãªãã¾ãï¼
SuppressedError --suppressed--> SuppressedError --suppressed--> å
ã®ã¨ã©ã¼
| |
error error
v v
resource1 ã®ç ´æ£ä¸ã«ã¨ã©ã¼ãçºçãã¾ãã resource2 ã®ç ´æ£ä¸ã«ã¨ã©ã¼ãçºçãã¾ãã
(ç ´æ£ã¯å¾ã§è¡ããã¾ã) (ç ´æ£ã¯å
ã«è¡ããã¾ã)
SuppressedError ã®ä½æ
try {
throw new SuppressedError(
new Error("æ°ããã¨ã©ã¼"),
new Error("å
ã®ã¨ã©ã¼"),
"ããã«ã¡ã¯",
);
} catch (e) {
console.log(e instanceof SuppressedError); // true
console.log(e.message); // "ããã«ã¡ã¯"
console.log(e.name); // "SuppressedError"
console.log(e.error); // Error: "æ°ããã¨ã©ã¼"
console.log(e.suppressed); // Error: "å
ã®ã¨ã©ã¼"
}
仿§æ¸
| Specification |
|---|
| ECMAScript Async Explicit Resource Management > # sec-suppressederror-objects > |