function api(cmd) {
    if (cmd > 5) throw 'unknown command'
    console.log('executing the command', cmd)
}

api(2)
api(7)


如果执行了以上代码,则会显示此错误消息:

executing the command 2

test.js:2
        if (cmd > 5) throw 'unknown command'
                     ^
unknown command


我如何(可以?)得到错误消息,返回一帧并显示为:

executing the command 2

test.js:7
        api(7)
        ^
unknown command

最佳答案

在许多JavaScript环境中,如果使用正确的Error对象引发错误,则在引发错误时,您可以获得完整的“祖先”函数调用堆栈(及其行号)。

因此,如下更改代码:

 if (cmd > 5) throw new Error('unknown command');


另一种可能性是改变必须使用该功能的方式。例如,它可以返回必须在发生任何事情之前调用的函数:



function api(cmd) {
    if (cmd > 5) return; // Return undefined
    // If all OK, return a function that does the job
    return function() {
       console.log('executing the command', cmd);
       // ....
    }
}

// The "contract" changed, so the caller must add parentheses:

api(2)()
api(7)() // TypeError: api() is not a function

关于javascript - 抛出前一帧信息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53360419/

10-10 23:54