美文网首页我爱编程
Node 风格的错误处理方式

Node 风格的错误处理方式

作者: 柏丘君 | 来源:发表于2018-05-27 10:34 被阅读0次

传统 Node 风格的错误处理是使用回调函数实现的。下面是一个例子,该例子摘自《深入浅出 RXJS》。虽然这本书是讲 RXJS 的,但看到这里,我觉得还是有必要再记录一下。
Node 风格的错误处理方式的特点:方法内部使用 try...catch 捕获错误,当发生错误时,将错误对象传递给回调函数的第一个参数,如果没有错误发生,将 null 传递给回调函数的第一个参数,将处理结果传递给回调函数的第二个方法。
在回调函数中,首先对第一个参数进行判断,如果该参数为真,即上层操作产生了错误,需要进行相应处理。如果该参数为假,即上层操作正常,已经取得了正确结果,需要对正确的结果进行处理。

例子

定义一个反序列化 JSON 的 parseToJSON 方法:

function parseToJSON(str:string,cb:(err,res) => any):void{
    try{
        const res = JSON.parse(str)
        cb(null,res);
    }catch(e){
        cb(e,null);
    }
}

调用该方法:

parseToJSON("[]",(err,res) => {
    if(err){
        console.log(err)
        return;
    }
    console.log(res)
})

parseToJSON("xxx",(err,res) => {
    if(err){
        console.log(err)
        return;
    }
    console.log(res)
})

运行结果:

[]
SyntaxError: Unexpected token x in JSON at position 0

嵌套问题

如果涉及到嵌套操作,就会引发回调地狱:

parseToJSON("[]",(err,res) => {
    if(err){
        console.log("第一次转换错误:",err)
        return;
    }
    console.log("第一次转换:",res)
    parseToJSON("{}",(err,res) => {
        if(err){
            console.log("第二次转换错误:",err)
            return
        }
        console.log("第二次转换:",res)
        parseToJSON("xxx",(err,res) => {
            if(err){
                console.log("第三次转换错误:",err)
                return                
            }
            console.log("第三次转换:",res)
        })
    })
})

运行结果:

第一次转换: []
第二次转换: {}
第三次转换错误: SyntaxError: Unexpected token x in JSON at position 0

完。

相关文章

  • Node 风格的错误处理方式

    传统 Node 风格的错误处理是使用回调函数实现的。下面是一个例子,该例子摘自《深入浅出 RXJS》。虽然这本书是...

  • the development server returned

    奇葩的错误,处理方式:点击这里

  • 10.1.2 自定义PHP的错误报告处理方式

    10.1.2 自定义PHP的错误报告处理方式 自定义错误报告的处理方式,可以完全绕过标准的PHP错误处理函数,这样...

  • 错误的处理方式

    在工作中,因为厌恶她,也太明白她话语中设下的陷阱。她外出办事不会拿着别人的身份证,更不会拿着单位的公章,说银行找她...

  • node.js学习

    一.node知识 1.回调函数,即异步IO的node处理方式:时间循环,观察者,请求对象,io线程。 先在线程池处...

  • PHP七天系列之异常处理

    异常说明 异常是推荐的错误处理方式,传统的错误处理方式要判断并一层一层返回到调用点,如下所示: 通过上面代码我们发...

  • Node编码风格

    https://github.com/felixge/node-style-guide 使用空格而不用tab 使用...

  • mac 安装小工具的测试

    1.安装node 错误

  • node-sass

    ionic 出现node-sass错误,解决办法: npm rebuild node-sass

  • ERROR in Cannot find module '

    错误表示找不到node-sass模块。我的node和npm版本信息如下: $ node -vv5.5.0$ npm...

网友评论

    本文标题:Node 风格的错误处理方式

    本文链接:https://www.haomeiwen.com/subject/bscbjftx.html