有没有办法处理异步回调中的错误?
const {NodeVM} = require('vm2');
const vm = new NodeVM({
timeout: 10000,
sandbox: {}
});
try {
vm.run(`
setInterval(() => {
console.log("haha")
process.exit() // <--- can't find a way to intercept this!
}, 1000);
process.exit()
`, 'code.js');
} catch(e) {
console.log(e.message);
}
setInterval(() => {
console.log("haha 2")
},1000);
我正在寻找一种防止整个脚本崩溃的方法。
您可以像这样处理异步错误:
process.on('uncaughtException', (err) => {
console.log(err);
})
请记住,这会捕获来自 VM 内部和外部的所有异常。
谢谢。 是的,它部分帮助了我。 顺便说一句,有什么方法可以区分“uncaughtException”中的错误是否与 VM(以及其中的哪一个)有关?
不幸的是,目前没有。 我有一个想法如何实现这一点,但需要一些时间。
我正在用 domain.run() 包装 vm.run() 并且它似乎工作。 不过不知道有没有副作用
let domain = Domain.create();
domain.on('error', (err) => {
console.error('Asynchronous error while executing script.', err.stack);
});
domain.run(() => {
try {
vm.run(script, filename);
} catch (err) {
console.error('Synchronous error while executing script.', err.stack);
}
});
此问题已自动标记为过时,因为它最近没有活动。 如果没有进一步的活动发生,它将被关闭。 感谢你的贡献。
@alsterg该方法似乎失去了效力..
@patriksimek如果您忘记了这一点,请告诉我好吗?
确认@ImSingee ,不幸的是方法不再起作用。
是否有关于如何处理异步错误的更新?
这有什么更新???
最有用的评论
我正在用 domain.run() 包装 vm.run() 并且它似乎工作。 不过不知道有没有副作用