这解释了如何获取未捕获异常的堆栈跟踪:
在生产代码中这样做是否可行?更有用的是,记录未处理的异常并继续(例如,如果在 Web 系统中使用其他 Web 请求)是否可行?
这解释了如何获取未捕获异常的堆栈跟踪:
在生产代码中这样做是否可行?更有用的是,记录未处理的异常并继续(例如,如果在 Web 系统中使用其他 Web 请求)是否可行?
很难回答你的问题,可能是因为没有足够的细节。
在(未指定的)未捕获异常后恢复的问题在于,不清楚您的进程上下文中有多少仍然是好的。对我来说,让您的流程失败(并退出)并让更高级别的控制流程启动一个新的流程似乎要好得多。
如果您不希望这些失败以任何频率发生(我希望是这种情况),那么这比继续在原始过程中进行工作要慢一点并不重要。
如果你这样做了,那么堆栈跟踪只会转到失败进程的标准错误。控制进程可以抓取它并将其很好地打包到日志中。
我已经构建了这样的系统(不是在 OCaml 中)并且它们运行良好。它们对您的效果如何取决于许多因素,因此我只能建议值得考虑。