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