node-工作模型及错误处理

工作模型

node采用一个长期运行的进程

node.js使用事件轮询:
这里写图片描述
node.js中,每个异步函数执行结束后,都会在事件队列中追加一个事件(同时保存一些必要参数)。事件轮询下一次循环便可取出事件,然后会调用异步方法对应的回调函数(参数)。这样一来,nodejs便能保证开发者编写的每行代码(每个回调)均在主线程中执行。

注意这里有一个问题,如果开发者在回调函数中调用了阻塞方法,那么整个事件轮询就会阻塞,事件队列中的事件得不到及时处理。正因为这样,nodejs中的一些库方法均是异步的,也提倡用户调用异步方法。

首次调用一个函数时,会创建一个调用堆栈。

错误处理

为什么要错误处理:node应用依托在一个拥有大量共享状态的大进程中。若某个回调函数出错,会影响整个进程--崩溃。

添加uncaughtException处理器,处理发生未被捕获的错误:

process.on('uncaughtException',function(err){
    console.error();
    process.exit(1);//手动退出
})

行文方式和分发error事件的API行为方式一致。比如,考虑如下例子,创建一个TCP服务器,并用telnet工具发起连接:

var net = require('net');
net.createServer(function(connection){
    connection.on('error',function(err){
        //err是一个错误对象
    })
}).listen(400);

http、net等原生模块都会分发error事件,如果该事件未被处理,就会抛出未捕获的异常。

绝大多数node异步API接收的回调函数,第一个参数都是错误对象或者null;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值