Appearance
title:erro
tag:erro
birth:2017-01-12
modified:2017-01-12
error
前言:讲解错误类
node 错误类型
- js 标准错误类型
- EvalError 解析 eval() 语句失败
- SyntaxError 语法解析错误
- RangeError 值范围错误
- ReferenceError 左值引用错误
- TypeError 右值赋值错误
- URIError 全局 URI 处理错误
- 系统错误
- 有底层触发
- 用户自定义错误
- 用户触发
- 断言错误,js 引擎触发,使用 assert 时产生
所有错误都继承自 Error 类.
错误处理
同步情况
使用 throw 抛出错误. 当遇到 try,catch
结构是会接收到错误消息. 否则会立即终止进程.
异步情况
- 作为异步回调的第一个参数传入
- 作为 error 事件传入给监听对象
- 任然使用 try,catch 捕获
在异步事件中,对于未捕获的的 EventEmitter
error 事件. 会抛出 uncaughtException
的情况. 可以利用 process.on('uncaughtException')
捕获.
自定义 error
error name
注意必须把 name 放在,捕获栈前面定义. 否则捕获栈会使用默认的 error
来处理错误.
何时使用 错误
- 和 php 类似当函数的输入来自外界时,需要利用抛出错误。
- 对于可以确定输入的私有函数不要抛出错误。这样做会导致性能缺陷。
常见使用场景
- 在使用框架是,错误的使用方式会使框架抛出异常来告知用户。
注意问题
不要在异步实践中使用 try
catch
来进行异常的捕获。 捕获异常只能在同步代码中出现。使用一种正常的方式来描述出现的问题。