用于打开输入通道ocaml的异常处理
-
25-09-2019 - |
题
如图ocaml的初学者,我有这样的当前工作的代码:
...
let ch_in = open_in input_file in
try
proc_lines ch_in
with End_of_file -> close_in ch_in;;
现在我想补充的错误处理对非现有输入文件,我写这样的:
let ch_in = try Some (open_in input_file) with _ -> None in
match ch_in with
| Some x -> try proc_lines x with End_of_file -> close_in x
| None -> () ;;
和获得的错误信息:此模式匹配类型的值“a选项 但在这里用来匹配EXN类型的值为最后一行。如果我替代的无的对的 _ 的,我得到一个错误,不完整匹配。
我读 EXN 是异常类型。我敢肯定,我不明白究竟怎么回事就在这里,所以请我指向正确的方向。谢谢!
解决方案
当嵌入其它模式匹配内部图案匹配需要包住嵌入配以任一( ... )
或begin ... end
(语法糖括号内):
let ch_in = try Some (open_in input_file) with _ -> None in
match ch_in with
| Some x -> (try proc_lines x with End_of_file -> close_in x)
| None -> () ;;
不隶属于 StackOverflow