在开始之前,我们需要知道两个知识点:

  1. try{}catch(e){}finally{}
  2. function return

相信可能会有疑惑,如果我写一个函数,在 function中有个 try如果我将 return写在里面,同时将另一个 return 写在外面,此时返回的是哪个值呢?

 function getNum() {
    try { 
        return 1
    } catch (e) { 
        return 2 
    }
    return 3;
}

console.log(getNum()) // --> 1

然后,try有另一个特性,他存在 finally,这是无论如何都会执行函数,如果我们在里面加上 return呢?

function getNum() {
    try { 
        return 1
    } catch (e) { 
        return 2 
    }finally{
        return 3
    }
    return 4;
}

console.log(getNum()) // --> 3

或许上面的代码不够完整,我们修改一下:

function getNum() {
    try { 
        console.log(1)
        return 2
        console.log(3)
    } catch (e) {
        console.log(4)
        return 5
        console.log(6)
    }finally{
        console.log(7)
        return 8
        console.log(9)
    }
    console.log(10)
    return 11;
    console.log(12)
}

console.log(getNum())
/**
1
7
8
*/

如上顺序 1-->7-->8

然后看抛出异常的

function getNum() {
    try { 
        console.log(1)
        throw "1111"
        return 2
        console.log(3)
    } catch (e) {
        console.log(4)
        return 5
        console.log(6)
    }finally{
        console.log(7)
        return 8
        console.log(9)
    }
    console.log(10)
    return 11;
    console.log(12)
}

console.log(getNum())
/**
1
4
7
8
*/

如上顺序 1-->4-->7-->8

根据这两种完整的情况,相信各位已经知道他们的处理方式了。

待完善应用场景

最后修改:2021 年 03 月 29 日 10 : 47 AM
如果觉得我的文章对你有用,请随意赞赏