当运行javascript app与某些第三方库集成时,在某些情况下,第三方lib会导致bug,例如,出现以下典型错误:
Uncaught (in promise) TypeError: Cannot read property 'length' of undefined
上面的错误在一定程度上是可以的,因为他们的代码质量不好(好的代码应该总是检查对象是否存在,数组长度> 0等在访问之前),我关心的是:我不希望js app的功能好像他们崩溃了,不再工作,即使导致上述错误的根本原因消失(例如,数组现在已经存在),应用程序将永远无法生存再次运行。
是否有一些方法强制js应用程序运行,即使第三方代码失败(或我自己的代码失败),但应该SURVIVE运行的其他功能区域(没有导致那里的崩溃),或生存再次工作,如果造成上述异常消失的原因?
请注意,我不想联系3RD派对代码让它工作
是否有一个通用机制在javascript中打开:只是跳过未捕获的错误并继续正常运行并且不崩溃应用程序?
答案 0 :(得分:0)
正如Nirus所说,包装可能导致try...catch块错误的所有内容:
try{
callYourLibHere();
}
阻止应该允许代码忽略抛出的错误,这将使代码在发生错误后继续运行。但是,这将隐藏此块中的每个错误。我们可以通过将错误记录到控制台来解决这个问题:
try {
callYourLibHere();
}
catch (e) {
console.log(e);
}
请注意,尝试解决错误而不是忽略它们将是解决此问题的更好方法。
答案 1 :(得分:0)
如果你不想使用 try-catch
process.on('uncaughtException', err => {
console.error('There was an uncaught error', err)
process.exit(1) //mandatory (as per the Node.js docs)
})
如果您不退出该进程,它可能会导致您的应用程序出现意外行为,这就是推荐的原因。
进一步reading