W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
錯(cuò)誤處理是所有應(yīng)用程序的重要組成部分。要拋出異常,請(qǐng)使用JavaScript的throw
關(guān)鍵字。在JavaScript中,通常使用 Error
對(duì)象和消息來(lái)表示錯(cuò)誤。你拋出這個(gè)錯(cuò)誤,以表示錯(cuò)誤情況:
<p>The code above generates the following result.</p>
function a() {
throw new Error("Something bad happened!");
}
a();
你可以使用try/catch塊捕獲異常,如在其他語(yǔ)言中看到的:
function a () {
throw new Error("Something bad happened!");
}
try {
a();
} catch (e) {
console.log("I caught an error: " + e.message);
}
console.log("program is still running");
為了捕獲異常,你可以使用catch關(guān)鍵字。對(duì)于要運(yùn)行的代碼,無(wú)論是否捕獲到異常,都可以使用finally關(guān)鍵字。下面的代碼顯示了一個(gè)簡(jiǎn)單的例子來(lái)演示這個(gè)。
try {
console.log("About to throw an error");
throw new Error("Error thrown");
} catch (e) {
console.log("I will only execute if an error is thrown");
console.log("Error caught: ", e.message);
} finally {
console.log("I will execute irrespective of an error thrown");
}
catch部分只有在拋出錯(cuò)誤時(shí)才執(zhí)行。finally部分仍然執(zhí)行,盡管在try部分中拋出了任何錯(cuò)誤。
這種異常處理方法非常適用于同步JavaScript。對(duì)于異步JavaScript,我們應(yīng)該處理回調(diào)中的錯(cuò)誤。
setTimeout(function () {
try {
console.log("About to throw an error");
throw new Error("Error thrown");
} catch (e) {
console.log("Error caught!");
}
}, 1000);
對(duì)于上面的代碼,我們不能告訴代碼外面的錯(cuò)誤。考慮一個(gè)簡(jiǎn)單的getConnection函數(shù)回調(diào)我們需要在成功連接后調(diào)用。
function getConnection(callback) {
var connection;
try {
throw new Error("connection failed");
// Notify callback that connection succeeded?
} catch (error) {
// Notify callback about error?
}
}
我們需要通知回調(diào)關(guān)于成功和失敗。這就是為什么Node.js有一個(gè)約定,如果有錯(cuò)誤,調(diào)用回調(diào)的第一個(gè)參數(shù)的錯(cuò)誤。如果沒(méi)有錯(cuò)誤,我們回調(diào)錯(cuò)誤設(shè)置為null。Node.js的getConnection函數(shù)將類似于下面的內(nèi)容。
function getConnection(callback) { /*m.o2fo.com*/
var connection;
try {
// Lets assume that the connection failed
throw new Error("connection failed");
// Notify callback that connection succeeded?
callback(null, connection);
} catch (error) {
// Notify callback about error?
callback(error, null);
}
}
// Usage
getConnection(function (error, connection) {
if (error) {
console.log("Error:", error.message);
} else {
console.log("Connection succeeded:", connection);
}
});
將錯(cuò)誤作為第一個(gè)參數(shù)確保錯(cuò)誤檢查的一致性。這是所有具有錯(cuò)誤條件的Node.js函數(shù)遵循的約定。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: