Error: cause
åºçº¿
广æ³å¯ç¨
èª 2021å¹´9æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
Error å®ä¾ä¸ç cause æ°æ®å±æ§æç¤ºå¯¼è´è¯¥é误çå
·ä½åå§åå ã
卿è·é误æ¶ï¼æä»¬å¯è½ä¼ä½¿ç¨æ´å
·ä½ææ´å å®ç¨çä¿¡æ¯å¯¹é误è¿è¡å
è£
ï¼åå°å
¶éæ°æåºãcause 屿§å°±ç¨äºè¿ä¸åºæ¯ï¼ä»¥ä¾¿ä»ç¶å¯ä»¥è®¿é®åå§çé误ã
åå¼
å®éè¿ options.cause åæ°è¢«ä¼ å
¥ Error() æé 彿°ï¼å¹¶ä¸æå¯è½ä¸åå¨ã
Error: cause ç屿§ç¹æ§ | |
|---|---|
| å¯å | æ¯ |
| 坿䏾 | å¦ |
| å¯é ç½® | æ¯ |
æè¿°
cause çå¼å¯ä»¥æ¯ä»»ä½ç±»åãä½ ä¸åºè¯¥å设æè·é误ç cause 屿§æ¯ä¸ä¸ª Errorï¼æ£å¦å¨ catch è¯å¥ä¸ç»å®çåéæªå¿
ä¸å®æ¯ Errorã䏿âå°ç»æåçæ°æ®ä½ä¸º causeâ示ä¾å±ç¤ºäºå»æä¸æä¾ Error ä½ä¸º cause çæ
åµã
示ä¾
>éæ°æåºå å« cause çé误
ææ¶ï¼æè·éè¯¯å¹¶ä½¿ç¨æ°çé误信æ¯å°å
¶éæ°æåºæ¯å¾æç¨çãå¨è¿ç§æ
åµä¸ï¼ä½ åºè¯¥å°åå§éè¯¯ä¼ éç»æ°ç Error çæé 彿°ï¼å¦ä¸æç¤ºï¼
try {
connectToDatabase();
} catch (err) {
throw new Error("Connecting to database failed.", { cause: err });
}
æ´è¯¦ç»ç示ä¾è¯·åé é误 > åºåç¸ä¼¼çé误ã
å°ç»æåçæ°æ®ä½ä¸º cause
为å¼åè
çè§£èç¼åçéè¯¯æ¶æ¯å¯è½å¹¶ä¸éåæºå¨è§£æï¼å 为å®ä»¬ä¼åå°è¡¨è¾¾æ¹å¼æ¹åï¼rewordingï¼ï¼ææ ç¹ç¬¦å·æ¹åçå½±åï¼ç ´åå·²æè§£æå¨çæ£å¸¸ä½¿ç¨ãå æ¤ï¼å½ä»å½æ°ä¸æåºé误æ¶ï¼ä½ å¯ä»¥æä¾ç»æåçæ°æ®ä½ä¸ºé误åå ï¼å³ cause åæ®µï¼ä¾æºå¨è§£æï¼ä»¥æ¤æ¿ä»£äººç±»å¯è¯»çéè¯¯æ¶æ¯ã
function makeRSA(p, q) {
if (!Number.isInteger(p) || !Number.isInteger(q)) {
throw new Error("RSA key generation requires integer inputs.", {
cause: { code: "NonInteger", values: [p, q] },
});
}
if (!areCoprime(p, q)) {
throw new Error("RSA key generation requires two co-prime integers.", {
cause: { code: "NonCoprime", values: [p, q] },
});
}
// rsa algorithmâ¦
}
è§è
| è§è |
|---|
| ECMAScript® 2027 Language Specification> # sec-installerrorcause> |