总结Node.js中的一些错误类型
2016-08-15 00:00
681 查看
前言
Node.js应用中可能会发生多种类型的错误。如:当出现语法错误或运行时错误时,会触发JavaScript错误;当试图试访问一个不存在或没有访问的文件时,会触发系统错误;除JavaScript错误和系统错误错误外,用户还可以自定义错误。
1. 错误分类
Node.js是一个JavaScript运行时平台,其应用发生错误都是一个
在Node.js应用中,可能发生的错误有以下4类:
1、标准JavaScript错误,如:
2、系统错误,这类错误由底层系统触发,如试图打开不存在的文件,试图通过已关闭的Soket发送数据时等
3、自定义错误,这类错误在应用代码中由用户指定触发
4、断言错误,这类错误在代码违反合法逻辑时,由Node.js的
2. JavaScript错误与系统错误
2.1 JavaScript错误及自定义错误
标准JavaScript错误是由JavaScript语言提供的,表示语法错误或使用不当的API。所有错误都是一个
自定义错误时,使用构造函数创建实例即可:
如上,我们自定义了一个错误,并使用throw关键字将错误抛出。在这个错误对象中,包括错误信息
1、
2、
除Error实例本身的属性外,还可自定义一些错误属性。如,自定义一个表示状态的属性status:
2.2 系统错误
系统错误是对JavaScript错误
1、
2、
3、
3. 异常捕获
Node.js采用事件驱动、异步编程基制,这意味着
Node.js式回调函数中的异常捕获
Node.js有很多异步API,这些API通过回调函数callback进行后续处理。如果发生错误,通常会在
基于事件的错误处理
如果对象是一个
总结
以上就是关于Node.js中的一些错误类型的总结,能够理解Node.js中错误类型,就可以帮我们更好的进行错误处理和异常捕获。希望本文的内容对大家能有所帮助。
Node.js中防止错误导致的进程阻塞的方法
使用Raygun对Node.js应用进行错误处理的方法
Nodejs Post请求报socket hang up错误的解决办法
分析Node.js connect ECONNREFUSED错误
windows系统下简单nodejs安装及环境配置
Nodejs sublime text 3安装与配置
nodejs开发环境配置与使用
NodeJS学习笔记之FS文件模块
Nodejs异步回调的优雅处理方法
Node.js应用中可能会发生多种类型的错误。如:当出现语法错误或运行时错误时,会触发JavaScript错误;当试图试访问一个不存在或没有访问的文件时,会触发系统错误;除JavaScript错误和系统错误错误外,用户还可以自定义错误。
1. 错误分类
Node.js是一个JavaScript运行时平台,其应用发生错误都是一个
Error实例或
Error子类的实例。
在Node.js应用中,可能发生的错误有以下4类:
1、标准JavaScript错误,如:
<EvalError>: 当调用
eval()失败时抛出
<SyntaxError>: 当使用非法JavaScript语法时抛出
<RangeError>: 当一个值不在指定范围内时抛出
<ReferenceError>: 当使用未定义的变量时抛出
<TypeError>: 当传递错误的类型参数抛出
<URIError>: 当一个全局的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.<anonymous> (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:
var error = new Error('您访问的页面不存在'); error.status = 404;
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。如:
const fs = require('fs'); fs.readFile('一个不存在的文件', (err, data) => { if (err) { console.error('读取文件错误', err); return; } // 其它处理 });
基于事件的错误处理
如果对象是一个
EventEmitter,可以通过对象
的'error'事件捕获并处理错误:
const net = require('net'); const connection = net.connect('localhost'); // 为stream添加一个 'error' 事件处理器: connection.on('error', (err) => { // 如果连接被服务器重置或连接不到指定的服务器 // 或其它连接错误时,错误会被传递到这里 console.error(err); }); connection.pipe(process.stdout);
总结
以上就是关于Node.js中的一些错误类型的总结,能够理解Node.js中错误类型,就可以帮我们更好的进行错误处理和异常捕获。希望本文的内容对大家能有所帮助。
您可能感兴趣的文章:
防止Node.js中错误导致进程阻塞的办法Node.js中防止错误导致的进程阻塞的方法
使用Raygun对Node.js应用进行错误处理的方法
Nodejs Post请求报socket hang up错误的解决办法
分析Node.js connect ECONNREFUSED错误
windows系统下简单nodejs安装及环境配置
Nodejs sublime text 3安装与配置
nodejs开发环境配置与使用
NodeJS学习笔记之FS文件模块
Nodejs异步回调的优雅处理方法
相关文章推荐
- IIS 错误 Server Application Error 详细解决方法
- IP地址组成与类型
- 使用ruby部署工具mina快速部署nodejs应用教程
- Redis02 使用Redis数据库(String类型)全面解析
- Lua教程(二):基础知识、类型与值介绍
- Lua教程(六):编译执行与错误
- 完美解决Persits.Jpeg.1 错误 ''800a0001''
- "在试着设置任务帐户信息时出现错误,指定的错误是:0x80070005:拒绝访问
- Mysql 本地计算机无法启动 mysql 服务 错误 1067:进程意外终止。
- MySQL命令行界面中出现字符错误提示的原因及解决方法
- 修复ShopNC使用QQ 互联时提示100010 错误
- C#中的委托数据类型简介
- C#枚举类型与结构类型实例解析
- mysql错误处理之ERROR 1665 (HY000)
- Nodejs从有门道无门菜鸟起飞必看教程
- Google官方支持的NodeJS访问API,提供后台登录授权
- 浅谈Nodejs观察者模式
- nodejs教程之环境安装及运行
- nodejs中的fiber(纤程)库详解
- 基于NodeJS的前后端分离的思考与实践(五)多终端适配