如何强制 js 忽略未捕获的错误并继续工作?
2016-10-08
8925
当运行与某些第三方库集成的 javascript 应用程序时,在某些情况下,第三方库会导致错误,例如,以下典型错误:
未捕获(在承诺中)TypeError:无法读取未定义的属性“length”
上述错误在某种程度上是可以接受的,因为它们的代码质量不佳(好的代码在访问对象之前应该始终检查对象是否存在、数组长度是否大于 0 等),我担心的是:我不希望 js 应用程序像崩溃了一样运行,即使导致上述错误的根本原因消失(例如,数组现在已经存在),应用程序也无法继续运行。
是否有某种方法可以强制 js 应用程序在第三方代码失败(或我自己的代码失败)后运行,但应该继续运行其他功能区域(没有导致崩溃的区域),或者如果导致上述异常的原因消失,继续运行?
请注意,我不想触碰第三方代码来实现此功能
javascript 中是否有一个通用机制可以开启:直接跳过未捕获的错误并继续正常运行,而不会使应用程序崩溃?
2个回答
正如 Nirus 所说,将所有可能导致错误的内容包装在 try...catch 块中:
try{
callYourLibHere();
}
块应允许代码忽略抛出的错误,这将使代码在发生错误后继续运行。但是,这将隐藏此块内的每个错误。我们可以通过将错误记录到控制台来修复此问题:
try {
callYourLibHere();
}
catch (e) {
console.log(e);
}
请注意,尝试解决错误而不是忽略它们是解决此问题的更好方法。
2016-10-08
如果您不想使用 try-catch
process.on('uncaughtException', err => {
console.error('There was an uncaught error', err)
process.exit(1) //mandatory (as per the Node.js docs)
})
如果您不退出该进程,它可能会导致应用程序出现意外行为,这就是建议这样做的原因。
进一步 阅读
Gaurav Sharma
2021-03-11