zoukankan      html  css  js  c++  java
  • node 异常捕获示例

    事件队列里面的异常捕获

    如下代码:

    function test(callback){
        // 这个事件会在另外一个事件队列里面,这里的throw抛出异常,下面的程序会捕获不到
        setTimeout(()=>{
            if (Math.random() < 0.1) {
                callback()
            } else {
                throw new Error('fail')
            }
        })
    }
    try {
        test(()=>{
            console.log('success');
        })
    } catch (error) {
        // 捕获不到
        console.log('fail')
    }
    

    捕获异常

    function test(callback){
        setTimeout(()=>{
            if (Math.random() < 0.1) {
                callback('smile')
            } else {
                callback(new Error('fail'))
            }
        })
    }
    test((res)=>{
        if (res instanceof Error) {
            console.log('fail')
        } else {
            console.log('success');
        }
    })
    

    优化

    将回调函数的第一个参数设置为异常,其他参数才是真正的参数

    function test(callback){
        setTimeout(()=>{
            if (Math.random() < 0.1) {
                callback(null,'smile')
            } else {
                callback(new Error('fail'))
            }
        })
    }
    test((res)=>{
        if (res) {
            console.log('fail')
        } else {
            console.log('success');
        }
    })
    
  • 相关阅读:
    Oracle分析函数
    oracle row_number的使用
    lru缓存测试类
    注解测试类
    lucene测试类
    SVN中检出(check out) 跟导出(export) 的区别
    Lucene原理与代码分析
    Lucene入门基础教程
    linux的less命令
    day4 大纲笔记
  • 原文地址:https://www.cnblogs.com/mengfangui/p/13728794.html
Copyright © 2011-2022 走看看