当前位置: 首页 > 编程笔记 >

OCaml 即使出现异常也要处置系统资源

柴琦
2023-03-14
本文向大家介绍OCaml 即使出现异常也要处置系统资源,包括了OCaml 即使出现异常也要处置系统资源的使用技巧和注意事项,需要的朋友参考一下

示例

即使处理引发异常,也可以使用高阶函数来确保处置系统资源。所使用的模式with_output_file可以使关注点清晰地分开:高阶with_output_file函数负责管理绑定到文件操作的系统资源,而处理f仅占用输出通道。

let with_output_file path f =
  let c = open_out path in
  try
    let answer = f c in
    (close_out c; answer)
  with exn -> (close_out c; raise exn)

让我们使用此高阶函数来实现一个将字符串写入文件的函数:

let save_string path s =
  (with_output_file path) (fun c -> output_string c s)

使用比fun c -> output_string c s可以保存更多复杂值更高级的功能。例如,参见标准库中的Marshal模块或Martin Jambon的Yojson库。

 类似资料: