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