【发布时间】:2013-09-09 21:23:18
【问题描述】:
我正在尝试捕获 node-opencv(本机绑定)引发的错误,而不是使进程崩溃。
https://github.com/peterbraden/node-opencv
我尝试使用try{}catch(){} 块并使用process.on('uncaughtException', function (exception) {}); 都没有任何效果,抛出错误时进程仍然崩溃。
示例:libc++abi.dylib: terminate called throwing an exception
这个问题是指任何被抛出的 opencv 错误,而不是一个特定的错误。
我可以将我所有的 node-opencv 放到他们自己的进程中吗?然后将其作为我的主进程的子进程运行。当它崩溃时,重新启动它并继续?
【问题讨论】:
-
node-opencv 内部是一个非常丑陋的模块,看起来它没有捕获自己的异常,所以你不能做太多事情。除非您想深入了解模块,并更改其代码(添加 C 异常处理),然后使用 node-gyp 重新编译。
-
你能在你的帖子中写下如何重现错误吗?
-
@hexacyanide 这不是针对特定错误,而是针对此库引发的任何错误。错误可以通过多种方式产生,只需传入一个错误的缓冲区或其他东西。
-
@MaksimsMihejevs 请参阅编辑 2,如果您认为这可行,请告诉我。谢谢。
-
是的,您可以使用集群和工作进程。但是当你意识到当你需要清理一些媒体或完成一些算法但它会丢失时可能会有并发症,所以你会喜欢从干净开始。如果错误很少见,它通常会起作用。
标签: node.js exception opencv try-catch