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)
使用比func->output_stringcs可以保存更多复杂值更高级的功能。例如,参见标准库中的Marshal模块或MartinJambon的Yojson库。
热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下