html5

js try catch 的使用

2019-07-22  本文已影响0人  前端小旋风

比如嘞

function test(){
    return new Promise((r,j) => {
        setTimeout(() => {
            j('@')
        }, 2000);
    })
}

test().catch((err) => {
    console.log(err) // @
})

如果用await的话就要用try catch 来获取catch的返回值了

async function test2(){
    try {
        let res = await test();
    }catch (e){
        console.log(e) // @
    }
}

test2();

try catch 的嵌套

function test(str){
    return new Promise((r,j) => {
        setTimeout(() => {
            j(str)
        }, 2000);
    })
}


async function test2(){
    try {
        let res = await test('@');
        try {
            let res = await test('!')
        }catch (e){
            console.log(e,'!') // 没有输出
        }
    }catch (e){
        console.log(e,'@') // @@
    }
}

test2();

内部的try因为外部的try出现异常,代码运行直接跳转到catch中

function test(str){
    return new Promise((r,j) => {
        setTimeout(() => {
            if(str == '@'){
                r(str)
            }else {
                j(str)
            }
        }, 2000);
    })
}


async function test2(){
    try {
        let res = await test('@');
        try {
            let res = await test('!')
        }catch (e){
            console.log(e,'!') // !!
        }
    }catch (e){
        console.log(e,'@')
    }
}

test2();

如果外部try 没有出现异常会继续向下执行

我建了一个前端微信交流群,欢迎大家加入,qq中转群号:1076484243

上一篇下一篇

猜你喜欢

热点阅读