2012-04-24 30 views
5

Có thể làm như sau?Xử lý nhiều loại ngoại lệ trong OCaml

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

Nếu tôi nhập điều đó vào trạng thái khó hiểu, tôi sẽ gặp lỗi cú pháp trên số with thứ hai. Có lẽ có một số cú pháp tôi không biết?

Phương pháp ưa thích để thêm một số try khác để khớp với mỗi with?

+0

Và những gì làm cho bạn nghĩ rằng cú pháp bạn viết nên làm việc? Bạn đã thấy nó trong mã của ai đó chưa? Hoặc có một ví dụ như vậy trong sách hướng dẫn hoặc hướng dẫn? Đoán không phải là một cách hay để học điều gì đó. – ygrek

Trả lời

5

with là biểu thức match; bạn không lặp lại nó cho nhiều mẫu, thay vào đó bạn sử dụng | để tách riêng từng mẫu ->biểu hiện, như với match.

13

Phần with là một loạt các mô hình, vì vậy bạn có thể viết những dòng này như sau:

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