Baseline Widely available
throw
è¯å¥ç¨äºæåºç¨æ·èªå®ä¹çå¼å¸¸ãå½å彿°çæ§è¡å°åæ¢ï¼throw
ä¹åçè¯å¥ä¸ä¼è¢«æ§è¡ï¼ï¼å¹¶ä¸æ§å¶æå°ä¼ éç»è°ç¨å æ ä¸ç¬¬ä¸ä¸ª catch
åã妿è°ç¨å½æ°ä¸æ²¡æ catch
åï¼åç¨åºå°ç»æ¢ã
function getRectArea(width, height) {
if (isNaN(width) || isNaN(height)) {
throw new Error("Parameter is not a number!");
}
}
try {
getRectArea(3, "A");
} catch (e) {
console.error(e);
// Expected output: Error: Parameter is not a number!
}
è¯æ³
expression
æåºè¡¨è¾¾å¼ã
throw
è¯å¥å¨ä»»ä½å¯ä»¥ä½¿ç¨è¯å¥çä¸ä¸æä¸é½ææãå®çæ§è¡ä¼äº§çä¸ä¸ªå¨è°ç¨å æ ä¼ æçå¼å¸¸ãæå
³éè¯¯åæ³¡åå¤ççæ´å¤ä¿¡æ¯ï¼è¯·åé
æ§å¶æµä¸é误å¤çã
throw
å
³é®ååé¢å¯ä»¥è·ä»»ä½ç±»åç表达å¼ï¼ä¾å¦ï¼
throw error; // æåºä¹åå®ä¹çå¼ï¼ä¾å¦ï¼å¨ catch åä¸ï¼
throw new Error("Required"); // æåºä¸ä¸ªæ°çé误对象
å¨å®è·µä¸ï¼ä½ æåºçå¼å¸¸åºè¯¥å§ç»æ¯ Error
对象æ Error
åç±»çå®ä¾ï¼ä¾å¦ RangeError
ãè¿æ¯å 为æè·é误ç代ç å¯è½æææè·çå¼å
·æä¸äºå±æ§ï¼ä¾å¦ é误信æ¯
ãä¾å¦ï¼Web API éå¸¸ä¼æåº DOMException
å®ä¾ï¼è¿äºå®ä¾ç»§æ¿èª Error.prototype
ã
è¯æ³ä¸å
è®¸å¨ throw
å
³é®ååè¦æåºç表达å¼ä¹é´åºç°æ¢è¡ã
ä¸é¢ç代ç ç»è¿èªå¨åå·è¡¥å ¨ï¼ASIï¼è½¬æ¢åå为ï¼
è¿æ®µä»£ç æ æï¼å ä¸ºä¸ return
è¯å¥ä¸åï¼throw
è¯å¥åé¢å¿
é¡»è·ä¸ä¸ªè¡¨è¾¾å¼ã
为äºé¿å è¿ä¸ªé®é¢ï¼é²æ¢ ASIï¼ï¼å¯ä»¥ä½¿ç¨æ¬å·ï¼
ç¤ºä¾ æåºç¨æ·èªå®ä¹çé误æ¤ç¤ºä¾å®ä¹äºä¸ä¸ªå½æ°ï¼è¯¥å½æ°å¨è¾å
¥ä¸æ¯é¢æç±»åæ¶æåº TypeError
å¼å¸¸ã
function isNumeric(x) {
return ["number", "bigint"].includes(typeof x);
}
function sum(...values) {
if (!values.every(isNumeric)) {
throw new TypeError("åªè½æ·»å æ°å");
}
return values.reduce((a, b) => a + b);
}
console.log(sum(1, 2, 3)); // 6
try {
sum("1", "2");
} catch (e) {
console.error(e); // TypeErrorï¼åªè½æ·»å æ°å
}
æåºä¸ä¸ªç°æç对象
æ¤ç¤ºä¾è°ç¨äºä¸ä¸ªåºäºåè°ç弿¥å½æ°ï¼å¹¶å¨åè°æ¥æ¶å°éè¯¯æ¶æåºé误ã
readFile("foo.txt", (err, data) => {
if (err) {
throw err;
}
console.log(data);
});
éè¿è¿ç§æ¹å¼æåºçéè¯¯æ æ³è¢«è°ç¨è
æè·ï¼å¹¶ä¼å¯¼è´ç¨åºå´©æºï¼é¤éï¼ï¼aï¼readFile
彿°æ¬èº«æè·äºéè¯¯ï¼æï¼bï¼ç¨åºå¨æè·é¡¶çº§é误çä¸ä¸æä¸è¿è¡ãä½ å¯ä»¥ä½¿ç¨ Promise()
æé 彿°æ´èªç¶å°å¤çé误ã
function readFilePromise(path) {
return new Promise((resolve, reject) => {
readFile(path, (err, data) => {
if (err) {
reject(err);
}
resolve(data);
});
});
}
try {
const data = await readFilePromise("foo.txt");
console.log(data);
} catch (err) {
console.error(err);
}
è§è æµè§å¨å
¼å®¹æ§ åè§
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