总结Node.js中的一些错误类型

前言

Node.js应用中可能会发生多种类型的错误。如:当出现语法错误或运行时错误时,会触发JavaScript错误;当试图试访问一个不存在或没有访问的文件时,会触发系统错误;除JavaScript错误和系统错误错误外,用户还可以自定义错误。

1. 错误分类

Node.js是一个JavaScript运行时平台,其应用发生错误都是一个Error实例或Error子类的实例。

在Node.js应用中,可能发生的错误有以下4类:

1、标准JavaScript错误,如:

: 当调用 eval() 失败时抛出

: 当使用非法JavaScript语法时抛出

: 当一个值不在指定范围内时抛出

: 当使用未定义的变量时抛出

: 当传递错误的类型参数抛出

: 当一个全局的URI函数被错误使用时抛出

2、系统错误,这类错误由底层系统触发,如试图打开不存在的文件,试图通过已关闭的Soket发送数据时等

3、自定义错误,这类错误在应用代码中由用户指定触发

4、断言错误,这类错误在代码违反合法逻辑时,由Node.js的assert模块触发

2. JavaScript错误与系统错误

2.1 JavaScript错误及自定义错误

标准JavaScript错误是由JavaScript语言提供的,表示语法错误或使用不当的API。所有错误都是一个Error类实例,而标准JavaScript错误会由语言本身在发生错误时构建。

自定义错误时,使用构造函数创建实例即可:

throw new Error('出错了,这是错误信息'); Error: 出错了,这是错误信息 at repl:1:7 at REPLServer.defaultEval (repl.js:248:27) at bound (domain.js:280:14) at REPLServer.runBound [as eval] (domain.js:293:12) at REPLServer. (repl.js:412:12) at emitOne (events.js:82:20) at REPLServer.emit (events.js:169:7) at REPLServer.Interface._onLine (readline.js:210:10) at REPLServer.Interface._line (readline.js:549:8) at REPLServer.Interface._ttyWrite (readline.js:826:14)

如上,我们自定义了一个错误,并使用throw关键字将错误抛出。在这个错误对象中,包括错误信息message和错误的堆栈信息stack,在异常捕获后,可以通过以下两个属性来访问这些信息:

1、error.message - 错误信息

2、error.stack - 错误堆栈追踪信息

除Error实例本身的属性外,还可自定义一些错误属性。如,自定义一个表示状态的属性status:

2.2 系统错误

系统错误是对JavaScript错误Error对象的一个扩展,它们表示程序能够处理的操作错误,这些错误信息都是在系统级别生成的。系统错误实例中除Error实例中的属性外,还包括以下几个属性:

1、error.syscall - 一个表示失败的系统调用信息的字符串

2、error.errno - 一个整数的错误码

3、error.code - 表示错误字符串,通常是大写字母E开头

3. 异常捕获

Node.js采用事件驱动、异步编程基制,这意味着try / catch捕获不到异步处理发生的错误。针对这种情况,我们可以使用以下两种方式来捕获或传递错误:

Node.js式回调函数中的异常捕获

Node.js有很多异步API,这些API通过回调函数callback进行后续处理。如果发生错误,通常会在callback函数的第一个参数中包含一个Error对象;如果未发生错误,第一参数将是null。如:

{ if (err) { console.error('读取文件错误',err); return; } // 其它处理 });

基于事件的错误处理

如果对象是一个EventEmitter,可以通过对象 的'error'事件捕获并处理错误:

// 为stream添加一个 'error' 事件处理器:
connection.on('error',(err) => {
// 如果连接被服务器重置或连接不到指定的服务器
// 或其它连接错误时,错误会被传递到这里
console.error(err);
});

connection.pipe(process.stdout);

总结

以上就是关于Node.js中的一些错误类型的总结,能够理解Node.js中错误类型,就可以帮我们更好的进行错误处理和异常捕获。希望本文的内容对大家能有所帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“基于nodejs...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建”,内容详细,步骤清晰,细节处理妥当,希望这篇“nodejs怎么实现目录不存在自动创建”文章能帮助大...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内容详细,步骤清晰,细节处理妥当,希望这篇“nodejs如何实现定时删除文件”文章能帮助大家解决疑惑...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文...
本篇内容主要讲解“怎么安装Node.js的旧版本”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎...
这篇“node中的Express框架怎么安装使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家...
这篇文章主要介绍“nodejs如何实现搜索引擎”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“nodejs如何实现搜索引擎...
这篇文章主要介绍“nodejs中间层如何设置”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“nodejs中间层如何设置”文...
这篇文章主要介绍“nodejs多线程怎么实现”,在日常操作中,相信很多人在nodejs多线程怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法...
这篇文章主要讲解了“nodejs怎么分布式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“nodejs怎么分布式”...
本篇内容介绍了“nodejs字符串怎么转换为数组”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情...
这篇文章主要介绍了nodejs如何运行在php服务器的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇nodejs如何运行在php服务器文章都...
本篇内容主要讲解“nodejs单线程如何处理事件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“nodejs单线程如何...
这篇文章主要介绍“nodejs怎么安装ws模块”,在日常操作中,相信很多人在nodejs怎么安装ws模块问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法...
本篇内容介绍了“怎么打包nodejs代码”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!
本文小编为大家详细介绍“nodejs接收到的汉字乱码怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“nodejs接收到的汉字乱码怎么解决”文章能帮助大家解...
这篇“nodejs怎么同步删除文件”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇...
今天小编给大家分享一下nodejs怎么设置淘宝镜像的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希