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/