我目前有以下代码
let some_funct() =
(
let handle = open_in "Myfle.dat" in
try
...
...
with e ->
close_in_noerr handle;
raise e ;
);;
代码工作正常。唯一的问题是当程序“Myfle.dat”丢失时我的程序终止。我相信的原因是open_in方法没有在try
语句中被调用。如果我在try块下移动该语句,则handle
块中with e
变量不可见。我不知道如何解决这个问题。有什么建议 ?
答案 0 :(得分:1)
您可以在尝试打开文件之前检查文件是否存在,或者使用两个嵌套的try/catch
。使用with_file
函数更好,它将接受文件名以及将在打开的通道上调用的函数。 with_file
函数将保证在任何情况下都将释放资源。它不是标准库的一部分,但可以在扩展标准库(例如Janestreet Core Library)中使用,也可以手动编写。