为了账号安全,请及时绑定邮箱和手机立即绑定

Node.js 异步异常如何处理?

Node.js 异步异常如何处理?

素胚勾勒不出你 2018-06-27 18:18:23
在看《深入浅出Node.js》的时候,书上第四章,有句话:“Node在处理异常上形成了一种约定,将异常作为回调函数的第一个实参传回,如果为空值,则表明异步调用没有异常抛出。”这句话下也有个简短的例子,本人刚学Node,感觉这句话好绕口。有没有更详细的例子?
查看完整描述

5 回答

?
杨魅力

TA贡献1811条经验 获得超5个赞

这句话指的是如下这种情况:

fs.readFile('/etc/passwd', function (err, data) {  
    if (err) {    
        // 判断是否发生错误,并做相应的处理
  } 
  else {    
      console.log(data); // 处理结果
  }
});

基本上node的异步api都有这样的约定,即最后一个参数为一个回调函数,这个回调函数的第一个参数表示异步操作的过程中是否发生异常,第二个参数表示异步操作的结果。


查看完整回答
反对 回复 2018-07-08
?
LEATH

TA贡献1936条经验 获得超6个赞

补充
============
如果需要抛出异常:

function doSomething(a, callback) {  
    if(! a) {    
        return callback(new Error('params error.')); //回调传入 Error
    }  
  var b = a++;  return callback(null, b);// 无异常}


查看完整回答
反对 回复 2018-07-08
?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

一大堆的function (err, xx, xx) {}来袭

查看完整回答
反对 回复 2018-07-08
?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

这是有err的情况,就是回调函数的第一个参数

client.on('line',function(err,data){    
    if(err){        
            console.log(err);
    }else
        console.log(data)
});

这是回调没有抛出异常的情况

client.on('data',funciton(data){    
    console.log(data);
})

这是没有回调参数的情况

client.on('end',function(){ console.log('end')})


查看完整回答
反对 回复 2018-07-08
?
慕码人8056858

TA贡献1803条经验 获得超6个赞

callback第一个参数为error,不是规定的规定

查看完整回答
反对 回复 2018-07-08
  • 5 回答
  • 0 关注
  • 493 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信