Baseline Widely available
try...catch
è¯å¥ç±ä¸ä¸ª try
ååä¸ä¸ª catch
åæ finally
åï¼æä¸¤è
çæï¼ç»æãé¦å
æ§è¡ try
åä¸ç代ç ï¼å¦æå®æåºå¼å¸¸ï¼åå°æ§è¡ catch
åä¸ç代ç ãfinally
åä¸ç代ç å°å¨æ§å¶æµéåºæ´ä¸ªç»æä¹åå§ç»è¢«æ§è¡ã
try {
nonExistentFunction();
} catch (error) {
console.error(error);
// Expected output: ReferenceError: nonExistentFunction is not defined
// (Note: the exact output may be browser-dependent)
}
è¯æ³
try {
tryStatements
} catch (exceptionVar) {
catchStatements
} finally {
finallyStatements
}
tryStatements
è¦æ§è¡çè¯å¥ã
catchStatements
try
åæåºå¼å¸¸åæ§è¡çè¯å¥ã
exceptionVar
å¯é
å¯éçæ è¯ç¬¦ææ¨¡å¼ï¼ç¨äºä¿åå
³èç catch
åææè·å°çå¼å¸¸ã妿 catch
åä¸ä½¿ç¨å¼å¸¸çå¼ï¼ä½ å¯ä»¥çç¥ exceptionVar
åå
¶å¨å´çæ¬å·ã
finallyStatements
卿§å¶æµéåº try...catch...finally
ç»æä¹åæ§è¡çè¯å¥ãè¿äºè¯å¥æ 论æ¯å¦æåºææè·å¼å¸¸é½ä¼æ§è¡ã
try
è¯å¥æ»æ¯ä»¥ try
åå¼å§ãå¹¶ä¸ï¼è³å°åå¨ catch
åæ finally
åãä¹å¯ä»¥åæ¶åå¨ catch
å finally
åãè¿ä¸ºæä»¬æä¾äº try
è¯å¥çä¸ç§å½¢å¼ï¼
try...catch
try...finally
try...catch...finally
ä¸å
¶ä»ç»æï¼å¦ if
æ for
ï¼ä¸åï¼try
ãcatch
å finally
åå¿
é¡»æ¯åï¼è䏿¯å个è¯å¥ã
try doSomething(); // SyntaxError
catch (e) console.log(e);
catch
åå
嫿å®å¨ try
å䏿åºå¼å¸¸æ¶è¦æ§è¡çè¯å¥ã妿 try
åï¼æå¨ try
åå
é¨è°ç¨ç彿°ï¼ä¸çä»»ä½è¯å¥æåºå¼å¸¸ï¼åç«å³è½¬ç§»å° catch
åã妿 try
å䏿²¡ææåºå¼å¸¸ï¼åè·³è¿ catch
åã
finally
åæ»æ¯å¨æ§å¶æµéåº try...catch...finally
ç»æä¹åæ§è¡ã宿»æ¯æ§è¡ï¼æ 论æ¯å¦æåºææè·å¼å¸¸ã
ä½ å¯ä»¥åµå¥å¤ä¸ª try
è¯å¥ã妿å
é¨ try
è¯å¥æ²¡æ catch
åï¼å使ç¨å
裹å®ç try
è¯å¥ç catch
åã
ä½ å¯ä»¥ä½¿ç¨ try
è¯å¥æ¥å¤ç JavaScript å¼å¸¸ãæå
³ JavaScript å¼å¸¸çæ´å¤ä¿¡æ¯ï¼è¯·åé
JavaScript æåã
å½ try
å䏿åºå¼å¸¸æ¶ï¼exceptionVar
ï¼å³ catch (e)
ï¼ä¿åäºå¼å¸¸çå¼ãä½ å¯ä»¥ä½¿ç¨è¿ä¸ªç»å®è·åæå
³æåºçå¼å¸¸çä¿¡æ¯ãè¿ä¸ªç»å®åªè½å¨ catch
åçä½ç¨åä¸ä½¿ç¨ã
å®ä¸éè¦æ¯å个æ è¯ç¬¦ãä½ å¯ä»¥ä½¿ç¨è§£ææ¨¡å¼æ¥ä¸æ¬¡æ§ä¸ºå¤ä¸ªæ è¯ç¬¦èµå¼ã
try {
throw new TypeError("å¦è±");
} catch ({ name, message }) {
console.log(name); // âTypeErrorâ
console.log(message); // âå¦è±â
}
catch
åå¥å建çç»å®ä¸ catch
åå¤äºåä¸ä½ç¨åå
ï¼å æ¤ catch
åä¸å£°æçåéä¸è½ä¸ catch
åå¥å建çç»å®å
·æç¸åçåç§°ãï¼æä¸ä¸ªä¾å¤ï¼ä½å®æ¯å·²å¼ç¨çè¯æ³ãï¼
try {
throw new TypeError("å¦è±");
} catch ({ name, message }) {
var name; // SyntaxError: Identifier 'name' has already been declared
let message; // SyntaxError: Identifier 'message' has already been declared
}
å¼å¸¸ç»å®æ¯å¯åçãä¾å¦ï¼ä½ å¯è½éè¦è§èå¼å¸¸å¼ï¼ä»¥ç¡®ä¿å®æ¯ä¸ä¸ª Error
对象ã
try {
throw "å¦è±ï¼è¿ä¸æ¯ä¸ä¸ª Error 对象";
} catch (e) {
if (!(e instanceof Error)) {
e = new Error(e);
}
console.error(e.message);
}
å¦æä½ ä¸éè¦å¼å¸¸å¼ï¼ä½ å¯ä»¥çç¥å¼å¸¸åéåå ¶å¨å´çæ¬å·ã
function isValidJSON(text) {
try {
JSON.parse(text);
return true;
} catch {
return false;
}
}
finally å
finally
åå
å«è¦å¨ try
å catch
åä¹åï¼ä½å¨ try...catch...finally
åä¹åçè¯å¥ä¹åæ§è¡çè¯å¥ãæ§å¶æµå°å§ç»è¿å
¥ finally
åï¼å
¶æ§è¡å¯ä»¥æä»¥ä¸æ¹å¼è¿è¡ï¼
try
忣叏æ§è¡å®æï¼ä¸æ²¡ææåºå¼å¸¸ï¼åç«å³æ§è¡ï¼catch
忣叏æ§è¡å®æåç«å³æ§è¡ï¼try
åæ catch
åä¸å°è¦æ§è¡æ§å¶æµè¯å¥ï¼return
ãthrow
ãbreak
ãcontinue
ï¼éåºåä¹åç«å³æ§è¡ã妿 try
å䏿åºå¼å¸¸ï¼å³ä½¿æ²¡æ catch
忥å¤çå¼å¸¸ï¼finally
åä»ç¶æ§è¡ï¼å¨è¿ç§æ
åµä¸ï¼å¼å¸¸ä»ç¶ä¼å¨ finally
åæ§è¡å®æåç«å³æåºã
以ä¸ç¤ºä¾å±ç¤ºäº finally
åçä¸ä¸ªç¨ä¾ãè¿æ®µä»£ç æå¼ä¸ä¸ªæä»¶ï¼ç¶åæ§è¡ä½¿ç¨è¯¥æä»¶çè¯å¥ï¼finally
åç¡®ä¿æä»¶å¨ä½¿ç¨åæ»æ¯å
³éï¼å³ä½¿æåºäºå¼å¸¸ã
openMyFile();
try {
// ç»å®èµæº
writeMyFile(theData);
} finally {
closeMyFile(); // å§ç»å
³éèµæº
}
æ§å¶æµè¯å¥ï¼return
ãthrow
ãbreak
ãcontinue
ï¼å¨ finally
åä¸å°âè¦çâ try
åæ catch
åç任使£å¸¸å®æå¼ã卿¤ç¤ºä¾ä¸ï¼try
åå°è¯è¿å 1ï¼ä½å¨è¿åä¹åï¼æ§å¶æµå·²è½¬ç§»å° finally
åï¼å æ¤ finally
åçè¿åå¼å°è¢«è¿åã
function doIt() {
try {
return 1;
} finally {
return 2;
}
}
doIt(); // è¿å 2
å¨ finally
åä¸ä½¿ç¨æ§å¶æµè¯å¥é叏䏿¯ä¸ä¸ªå¥½ä¸»æã请åªå°å
¶ç¨äºæ¸
ç代ç ã
å½ä½¿ç¨ catch
åæ¶ï¼catch
åå°å¨ try
å䏿åºå¼å¸¸æ¶è¢«æ§è¡ãä¾å¦ï¼å¨ä¸é¢ç代ç ä¸ï¼æ§å¶æµå°è¢«è½¬ç§»å° catch
åã
try {
throw "æçå¼å¸¸"; // 产çå¼å¸¸
} catch (e) {
// å¤çä»»ä½å¼å¸¸çè¯å¥
logMyErrors(e); // å°å¼å¸¸å¯¹è±¡ä¼ éç»é误å¤çå¨
}
catch
åæå®äºä¸ä¸ªæ è¯ç¬¦ï¼å¦ä¸ä¾ä¸ç e
ï¼ï¼å®ä¿åäºå¼å¸¸çå¼ãè¿ä¸ªå¼åªè½å¨ catch
åçä½ç¨åå
使ç¨ã
ä½ å¯ä»¥éè¿å° try...catch
åä¸ if...else if...else
ç»æç»åèµ·æ¥ï¼åå»ºâæ¡ä»¶ catch
åâãä¾å¦ï¼
try {
myroutine(); // å¯è½ä¼æåºä¸ç§ç±»åçå¼å¸¸
} catch (e) {
if (e instanceof TypeError) {
// å¤ç TypeError å¼å¸¸çè¯å¥
} else if (e instanceof RangeError) {
// å¤ç RangeError å¼å¸¸çè¯å¥
} else if (e instanceof EvalError) {
// å¤ç EvalError å¼å¸¸çè¯å¥
} else {
// å¤çæªæå®å¼å¸¸çè¯å¥
logMyErrors(e); // å°å¼å¸¸å¯¹è±¡ä¼ éç»é误å¤çå¨
}
}
ä¸ä¸ªå¸¸è§çç¨ä¾æ¯ä» æè·ï¼å¹¶æ¶é¤ï¼ä¸å°é¨å颿é误ï¼ç¶åå¨å ¶ä»æ åµä¸éæ°æåºé误ï¼
try {
myRoutine();
} catch (e) {
if (e instanceof RangeError) {
// å¤çè¿ä¸ªé常常è§ç颿é误çè¯å¥
} else {
throw e; // éæ°æåºéè¯¯ï¼æ²¡æä»»ä½æ¹å
}
}
è¿ç±»ä¼¼ä¸å ¶ä»è¯è¨ä¸çè¯æ³ï¼æ¯å¦ Javaï¼
try {
myRoutine();
} catch (RangeError e) {
// å¤çè¿ä¸ªé常常è§ç颿é误çè¯å¥
}
// å
¶ä»é误被éå¼éæ°æåº
åµå¥ try å
é¦å ï¼è®©æä»¬ççä¸é¢ç代ç ä¼åçä»ä¹ï¼
try {
try {
throw new Error("å¦è±");
} finally {
console.log("finally");
}
} catch (ex) {
console.error("å¤å±", ex.message);
}
// è¾åºï¼
// âfinallyâ
// âå¤å±â âå¦è±â
ç°å¨ï¼å¦ææä»¬å·²ç»å¨å
é¨ç try
åä¸éè¿æ·»å catch
åæè·äºå¼å¸¸ï¼
try {
try {
throw new Error("å¦è±");
} catch (ex) {
console.error("å
å±", ex.message);
} finally {
console.log("æç»");
}
} catch (ex) {
console.error("å¤å±", ex.message);
}
// è¾åºï¼
// âå
å±â âå¦è±â
// âæç»â
ç°å¨ï¼è®©æä»¬éæ°æåºé误ã
try {
try {
throw new Error("å¦è±");
} catch (ex) {
console.error("å
å±", ex.message);
throw ex;
} finally {
console.log("æç»");
}
} catch (ex) {
console.error("å¤å±", ex.message);
}
// è¾åºï¼
// âå
å±â âå¦è±â
// âæç»â
// âå¤å±â âå¦è±â
ä»»ä½ç¹å®çå¼å¸¸åªä¼è¢«ç´æ¥å
裹å®ç catch
åæè·ä¸æ¬¡ï¼é¤é该å¼å¸¸è¢«éæ°æåºãå½ç¶ï¼å¦æå¨âå
é¨â代ç åä¸è§¦åäºä»»ä½æ°çå¼å¸¸ï¼å 为 catch
åä¸ç代ç å¯è½ä¼æ§è¡æäºæä½å¹¶æåºå¼å¸¸ï¼ï¼è¿äºå¼å¸¸å°ç±å¤é¨ç catch
åæè·ã
妿 finally
åè¿åä¸ä¸ªå¼ï¼è¿ä¸ªå¼å°æä¸ºæ´ä¸ª try-catch-finally
è¯å¥çè¿åå¼ï¼èä¸ç®¡ try
å catch
åä¸ç return
è¯å¥ãè¿å
æ¬ catch
å䏿åºçå¼å¸¸ã
(() => {
try {
try {
throw new Error("å¦è±");
} catch (ex) {
console.error("å
å±", ex.message);
throw ex;
} finally {
console.log("æç»");
return;
}
} catch (ex) {
console.error("å¤å±", ex.message);
}
})();
// è¾åºï¼
// âå
å±â âå¦è±â
// âæç»â
å¤å±çâå¦è±âä¸ä¼è¢«æåºï¼å 为 finally
åä¸ç return
è¯å¥å°æ§å¶æµè½¬ç§»å°å¤é¨ãåæ ·çè§åä¹éç¨äº catch
åä¸è¿åçå¼ã
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