JavaScript中,?異常(Exception)和錯誤(Error)
JavaScript 是一種解釋型語言,通常在瀏覽器中通過JavaScript引擎執行。最著名的兩個引擎是:SpiderMonkey(由 Mozilla Firefox 使用)和V8(由 Google Chrome 和 Node.js 使用)。
錯誤(Error):編譯或解析階段的致命問題(如語法錯誤),程序無法運行。 ??處理方式?:需開發者修復代碼后才能運行,無法通過程序邏輯處理。
異常(Exception):運行時發生的可處理問題(如調用未定義方法、文件不存在),程序可繼續運行。?處理方式?:通過try-catch結構捕獲并恢復執行,避免程序終止。
Error對象及錯誤處理機制:https://blog.csdn.net/c_s_d_n_2009/article/details/149408647
JavaScript的finally塊
JavaScript,finally塊通常用于執行無論是否捕獲到異常都必須執行的代碼。
1、捕獲了異常后,不再向上層調用者傳遞任何異常信息,使用finally處理。
async function fetchData(path) {const data = await fetch(path).then((response) => {if (!response.ok) {throw new Error("Network response was not ok");}return response.json();});return data;
}// 向上層調用者繼續傳遞異常
async function getData() {let data = {};try {// 模擬一個可能失敗的操作data = await fetchData("https://www.sequelize.cn/");} catch (error) {throw new Error("錯誤: " + error.message);} finally {// 使用了finally,return data;}// return data;
}async function main() {try {const data = await getData();console.log("Data:", data);} catch (error) {console.error("Error fetching data:", error);}
}main();
輸出:?Data: {}
2、捕獲了異常后,還想繼續向上層調用者傳遞異常信息,不使用finally處理。
async function fetchData(path) {const data = await fetch(path).then((response) => {if (!response.ok) {throw new Error("Network response was not ok");}return response.json();});return data;
}// 向上層調用者繼續傳遞異常
async function getData() {let data = {};try {// 模擬一個可能失敗的操作data = await fetchData("https://www.sequelize.cn/");} catch (error) {throw new Error("錯誤: " + error.message);}// finally {// // 使用了finally,// return data;// }return data;
}async function main() {try {const data = await getData();console.log("Data:", data);} catch (error) {console.error("Error fetching data:", error);}
}main();
輸出:??Error fetching data: Error: 錯誤: Unexpected token '<', "<!doctype "... is not valid JSON