在 node.js 中抛出错误
本篇文章将介绍如何在 node.js 中抛出错误。
在 node.js 中抛出错误
错误是不允许系统正常运行的语句。
node.js 中的错误通过异常处理,异常是在 throw 关键字的帮助下创建的。 这可以帮助用户创建自定义异常。
一旦执行了这行 javascript 代码,程序的正常流程就会停止,控制权将掌握在最近的异常处理程序中。 如果调用函数之间不存在 catch 块,则程序终止。
语法:
throw expression;
该值通常可以是客户端代码中的任何 javascript 值,包括数字、对象或字符串。 但是在 node.js 中,我们不会抛出字符串; 我们只抛出错误对象。
错误 error 对象
error 对象是一个对象,它是错误对象的实例或扩展了主错误模块中提供的错误类。 发生运行时错误时会生成错误对象。
我们还可以使用错误对象作为自定义异常的基础对象。
throw new error('you reached the end!');
class mycustomerror extends error {
// ...
}
throw new mycustomerror();
处理异常
异常处理程序是 try...catch
语句。 try 块中包含的代码行中抛出的任何异常都在适当的 catch 块中处理。
如果在我们的程序运行时抛出未捕获的异常,程序将失败。
try {
/* your regular code */
} catch (e) {
/* catch your exception here */
}
e 是本例中的异常值。 我们可以添加多个可以检测不同类型错误的处理程序。
然后,我们可以根据异常类型修改您的程序。 要修复程序失败问题,请等待进程对象上的 uncaughtexception
事件。
process.on('uncaughtexception', err => {
console.error('an uncaught error is caught here', err);
process.exit(1);
});
我们不需要为此导入主流程模块,因为它将自动包含在内。
使用 promises 处理异常
promises 可以让您将独一无二的操作链接在一起,并在最后处理错误。 promise 链在处理错误方面非常棒。
当 promise 被拒绝时,控件会跳转到最近的拒绝处理程序。 这在实践中非常方便。
如大家所见,.catch
不一定是即时的。 它可能看起来在一个或许多 .then
之后。
foofunction()
.then(barfunction)
.then(foobarfunction)
.catch(err => console.error(err));
使用 async/await 处理异常
使用 async/await
,你需要使用 try...catch
来捕获错误。
async function foofunction() {
try {
await foobarfunction();
} catch (err) {
console.error(err.message);
}
}
让我们通过下面的简单示例来理解它:
foobarfunction = async() => {
throw new error("hello jiyii.com users!")
}
async function foofunction() {
try {
console.log("before error")
await foobarfunction();
} catch (err) {
console.error(err.message);
}
}
foofunction()
在上面的示例中,我们调用了 foofunction()
,它首先打印消息,然后在内部调用 foobarfunction()
。 在 foobarfunction()
中,我们只是抛出一个由 foofunction()
捕获的错误。
尝试在支持 node.js 的 replit 中运行上述代码片段。 它将显示以下结果:
输出结果如下:
before error
hello jiyii.com users!
转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处
本文地址:
相关文章
node.js 中的 http 发送 post 请求
发布时间:2023/03/27 浏览次数:456 分类:node.js
-
在本文中,我们将学习如何使用 node.js 使用第三方包发出发送 post 请求。
发布时间:2023/03/27 浏览次数:243 分类:node.js
-
本教程演示了如何在 node js 中使用 module.exports。