在OCaml中处理多个异常类型

时间:2012-04-24 23:49:49

标签: syntax error-handling ocaml

以下可能吗?

try
  (* danger zone *)
with Not_found e -> 
  (* code to handle not found *)
with t -> 
  (* code to handle all other issues *)

如果我在顶层输入,我会在第二个with上出现语法错误。也许有一些我不知道的语法?

首选方法是预先添加另一个try以匹配每个with

2 个答案:

答案 0 :(得分:13)

with部分是一系列模式,因此您可以按如下方式编写:

try
    (* dangerous code area *)
with
    | Not_found -> (* Not found handling code *)
    | t -> (* Handle other issues here *)

答案 1 :(得分:5)

withmatch表达式;您不要为多个模式重复此操作,而是使用|分隔每个模式 -> 表达式,就像match一样