用函数对象方式声明的函数中的异常捕获问题

新手上路,请多包涵

简易示例代码如下

let job = `let a ='abc';   console.log(a.b.c)`

let fun = new Function(job)
try{fun()}catch(e){
    console.warn(e.stack)
}

报错信息

TypeError: Cannot read property 'c' of undefined
    at eval (eval at <anonymous> (E:\work\project\test\test2.js:3:11), <anonymous>:3:33)
    at Object.<anonymous> (E:\work\project\test\test2.js:4:5)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)

可以看到捕获到的ERROR的堆栈追踪到3:11就结束了。实际情况中,${job}是存在数据库临时运行时加载的。由于获取不到${job}中实际出错的代码内容及行数等信息,此时想要调试${job}就变为非常不方便,请问有什么方法能够追踪到构造函数内部的错误或是其他间接解决办法?

阅读 1k
1 个回答

console.warn(e.stack)前面加个console.log(job)啊,就知道源程序是啥,然后根据错误提示再调试不就可以了吗?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题