解释 Node.js 中的一些错误处理方法
Node.js 是一个开源的 JavaScript 运行时环境。它通常在服务器端用于为 Web 和移动应用程序构建 API。 Netflix、Paypal、Uber 等大量公司使用 Node.js。
先决条件:
- 承诺
- 异步等待
错误是程序由于逻辑、语法、超时等多种因素而出现的任何问题。错误处理是 Node.js 的重要组成部分,应谨慎实施。在本教程中,让我们看看一些处理错误的方法,但首先让我们设置我们的基本环境。
创建一个名为 error.js 的文件。该文件将作为探索各种方法的基础。
方法 1:使用 try-catch 块。
catch 块处理由 try 块中的代码引发的任何异常。
句法:
try{
// Code
}catch(error){
// Error Handling
}
例子:
Javascript
try{
const areYouAwesome = false;
if(!areYouAwesome){
throw new Error("We know you are awesome,
we are having troubing with our code.")
}
}catch(error){
console.log(error.message);
}
Javascript
const delay = (wait) => {
return new Promise(resolve => setTimeout(resolve, wait));
}
const awesomeFunction = async () => {
try{
await delay(2000)
throw new Error("Error thrown after delay");
}catch(error){
console.log(error.message);
}
}
awesomeFunction();
Javascript
const awesomeFunction = (isAwesome) => {
return new Promise((resolve, reject) => {
if(isAwesome){
resolve("You are awesome");
}else{
reject("We know you are awesome,
we are having troubing with our code.")
}
})
}
awesomeFunction(false).then((message) => {
console.log(message);
}).catch((error) => {
console.log(error)
});
Javascript
process.on('uncaughtException', error => {
console.log(error.message);
process.exit(1)
})
const awesomeFunction = (isAwesome) => {
if(!isAwesome){
throw new Error("We know you are awesome,
we are having troubing with our code.")
}
}
awesomeFunction();
输出:
We know you are awesome, we are having troubing with our code.
方法2:在执行异步操作时使用try-catch
异步操作有时需要在检索数据时暂停程序。我们可以将 async-await 函数与 try-catch 块配对来处理错误。
句法:
const myFunction = async () => {
try{
await operationWhichTakesTime()
}catch(error){
// Error handling
}
}
例子:
Javascript
const delay = (wait) => {
return new Promise(resolve => setTimeout(resolve, wait));
}
const awesomeFunction = async () => {
try{
await delay(2000)
throw new Error("Error thrown after delay");
}catch(error){
console.log(error.message);
}
}
awesomeFunction();
输出:
Error thrown after delay
方法 3:使用 Promise
Promise 用于处理 JavaScript 中的异步操作。它们是 Promise 的三个状态,即未决状态、已解决状态和已拒绝状态。在挂起状态下,promise 正在等待某个其他函数或某些数据被检索。在已解决的状态下,该函数已按预期工作并且承诺已解决。在拒绝状态下,函数中出现了一些错误,并且 promise 被拒绝。
句法:
promise().then((data) => {
// Code
}).catch((error) => {
// Error handler
})
例子:
Javascript
const awesomeFunction = (isAwesome) => {
return new Promise((resolve, reject) => {
if(isAwesome){
resolve("You are awesome");
}else{
reject("We know you are awesome,
we are having troubing with our code.")
}
})
}
awesomeFunction(false).then((message) => {
console.log(message);
}).catch((error) => {
console.log(error)
});
输出:
We know you are awesome, we are having troubing with our code.
方法 4:使用事件监听器
Node.js 中的进程全局对象可用于侦听程序中可能出现的任何未捕获的异常。
句法:
process.on('uncaughtException', error => {
// Error Handling
process.exit(1)
})
例子:
Javascript
process.on('uncaughtException', error => {
console.log(error.message);
process.exit(1)
})
const awesomeFunction = (isAwesome) => {
if(!isAwesome){
throw new Error("We know you are awesome,
we are having troubing with our code.")
}
}
awesomeFunction();
输出:
We know you are awesome, we are having troubing with our code.