Node 采用 V8 引擎处理 JavaScript 脚本, 最大特点就是单线程运行, 一次只能运行一个任务. 这导致 Node 大量采用异步操作 (asynchronous opertion), 即任务不是马上执行, 而是插在任务队列的尾部, 等到前面的任务运行完后再执行.
node 为了执行某一任务的后续操作, 利用回调函数来进行获取数据, 但是上一步的操作可能会出现操作的错误, 此次操作为异步操作, 不能利用 try-catch 语句来进行错误的抛出.
下面看一下 node 中处理异步错误的方法:
为此几乎大部分的异步回调函数的第一个参数都是一个 error 对象, 第二个参数为上一步获取的值 value
- var fs = require('fs');
- // 利用异步操作的回调函数来抛出错误
- fs.readFile('./10.txt',
- function(err, data) {
- if (err) throw err;
- console.log(data.toString());
- })
- // 利用 try-catch 来进行抛出是无法抛出错误的
- try {
- fs.readFile('./10.txt',
- function(err, data) {
- console.log(data);
- })
- } catch(e) {
- console.log(e);
- }
throw 错误抛出
try-catch 不会抛出错误
来源: http://www.css88.com/qa/node-js/12092.html