2012-04-24 15 views
5

È possibile quanto segue?Gestione di più tipi di eccezione in OCaml

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

Se digito che nel toplevel, ottengo un errore di sintassi nella seconda with. Forse c'è qualche sintassi di cui non sono a conoscenza?

È il metodo preferito per anteporre un altro try per corrispondere a ogni with?

+0

E cosa ti fa pensare che la sintassi si scrive dovrebbe funzionare? L'hai visto nel codice di qualcun altro? O c'era un tale esempio in manuale o tutorial? Indovinare non è un bel modo per imparare qualcosa. – ygrek

risposta

5

with è un'espressione match; non lo si ripete per più motivi, ma si utilizza | per separare ogni modello ->espressione, come con un match.

13

La with parte è una serie di modelli, in modo da poter scrivere questo come segue:

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