Custom Errors in OCaml
Our example demonstrates how to create and use custom errors in OCaml. We’ll create a custom error type and use it in a function that may fail under certain conditions.
(* A custom error type *)
type arg_error = {
arg: int;
message: string;
}
(* Exception for our custom error *)
exception ArgError of arg_error
(* Function that may raise our custom error *)
let f arg =
if arg = 42 then
raise (ArgError { arg; message = "can't work with it" })
else
arg + 3
(* Main function *)
let () =
try
let _ = f 42 in
print_endline "Function succeeded"
with
| ArgError e ->
Printf.printf "%d - %s\n" e.arg e.message
| _ ->
print_endline "Unknown error occurred"In this OCaml code:
We define a custom error type
arg_errorwith fields for the argument and an error message.We create an
ArgErrorexception that carries our custom error type.The
ffunction raises our custom exception when the input is 42, otherwise it returns the input plus 3.In the main function, we use a try-with block to handle exceptions. This is similar to try-catch in other languages.
If an
ArgErroris caught, we print its details. For any other exception, we print a generic message.
To run this program, save it as custom_errors.ml and use the OCaml compiler:
$ ocamlc custom_errors.ml -o custom_errors
$ ./custom_errors
42 - can't work with itThis example shows how to create and use custom errors in OCaml. While OCaml doesn’t have an exact equivalent to Go’s errors.As, the pattern matching in the exception handling provides similar functionality, allowing you to match and destructure specific error types.