我刚刚注意到Lwt.mli中的以下函数:
val backtrace_bind : (exn -> exn) -> 'a t -> ('a -> 'b t) -> 'b t
val backtrace_catch : (exn -> exn) -> (unit -> 'a t) -> (exn -> 'a t) -> 'a t
val backtrace_try_bind : (exn -> exn) -> (unit -> 'a t) -> ('a -> 'b t) -> (exn -> 'b t) -> 'b t
val backtrace_finalize : (exn -> exn) -> (unit -> 'a t) -> (unit -> unit t) -> 'a t不幸的是,他们没有证件。他们干些什么?
发布于 2015-08-06 16:14:19
对GitHub和文档的一些深入研究表明,当使用pa_lwt和-lwt-debug传递给camlp4时,它们在内部被用于在线程之间传播回溯。默认情况下,在ppx_lwt中,它们也用于相同的用途。
-lwt-debug选项记录在这个页面上:http://ocsigen.org/lwt/2.5.0/manual/ (搜索该页面以获得“回溯支持”)。
在ppx_lwt中关闭此选项的选项记录在这里:lwt (搜索-no-debug)。
请参见此提交,它显示了这些在try_lwt生成的代码中使用,等等:https://github.com/ocsigen/lwt/commit/78eee34fb6247da38a3d4ea5b7872676181d47e2
编辑:通过查看更多的代码来确认更多的内容,并包含注释。
https://stackoverflow.com/questions/31859985
复制相似问题