package luv

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type

Error handling.

See Error handling in the user guide and Error handling in libuv.

type t = [
  1. | `E2BIG
  2. | `EACCES
  3. | `EADDRINUSE
  4. | `EADDRNOTAVAIL
  5. | `EAFNOSUPPORT
  6. | `EAGAIN
  7. | `EAI_ADDRFAMILY
  8. | `EAI_AGAIN
  9. | `EAI_BADFLAGS
  10. | `EAI_BADHINTS
  11. | `EAI_CANCELED
  12. | `EAI_FAIL
  13. | `EAI_FAMILY
  14. | `EAI_MEMORY
  15. | `EAI_NODATA
  16. | `EAI_NONAME
  17. | `EAI_OVERFLOW
  18. | `EAI_PROTOCOL
  19. | `EAI_SERVICE
  20. | `EAI_SOCKTYPE
  21. | `EALREADY
  22. | `EBADF
  23. | `EBUSY
  24. | `ECANCELED
  25. | `ECONNABORTED
  26. | `ECONNREFUSED
  27. | `ECONNRESET
  28. | `EDESTADDRREQ
  29. | `EEXIST
  30. | `EFAULT
  31. | `EFBIG
  32. | `EHOSTUNREACH
  33. | `EILSEQ
  34. | `EINTR
  35. | `EINVAL
  36. | `EIO
  37. | `EISCONN
  38. | `EISDIR
  39. | `ELOOP
  40. | `EMFILE
  41. | `EMSGSIZE
  42. | `ENAMETOOLONG
  43. | `ENETDOWN
  44. | `ENETUNREACH
  45. | `ENFILE
  46. | `ENOBUFS
  47. | `ENODEV
  48. | `ENOENT
  49. | `ENOMEM
  50. | `ENONET
  51. | `ENOPROTOOPT
  52. | `ENOSPC
  53. | `ENOSYS
  54. | `ENOTCONN
  55. | `ENOTDIR
  56. | `ENOTEMPTY
  57. | `ENOTSOCK
  58. | `ENOTSUP
  59. | `EPERM
  60. | `EPIPE
  61. | `EPROTO
  62. | `EPROTONOSUPPORT
  63. | `EPROTOTYPE
  64. | `ERANGE
  65. | `EROFS
  66. | `ESHUTDOWN
  67. | `ESPIPE
  68. | `ESRCH
  69. | `ETIMEDOUT
  70. | `ETXTBSY
  71. | `EXDEV
  72. | `UNKNOWN
  73. | `EOF
  74. | `ENXIO
]

Error codes returned by libuv functions.

Binds libuv error codes, which resemble Unix error codes.

val strerror : t -> string

Returns the error message corresponding to the given error code.

Binds uv_strerror_r.

val err_name : t -> string

Returns the name of the given error code.

Binds uv_err_name_r.

val translate_sys_error : int -> t

Converts a system error code to a libuv error code.

Binds uv_translate_sys_error.

val set_on_unhandled_exception : (exn -> unit) -> unit

If user code terminates a callback by raising an exception, the exception cannot be allowed to go up the call stack, because the callback was called by libuv (rather than OCaml code), and the exception would disrupt libuv book-keeping. Luv instead passes the exception to a global Luv exception handler. Luv.Error.set_on_unhandled_exception f replaces this exception handler with f.

For example, in

Luv.Error.set_on_unhandled_exception f;
Luv.File.mkdir "foo" (fun _ -> raise Exit);

the exception Exit is passed to f when mkdir calls its callback.

It is recommended to avoid letting exceptions escape from callbacks in this way.

The default behavior, if Luv.Error.set_on_unhandled_exception is never called, is for Luv to print the exception to STDERR and exit the process with exit code 2.

It is recommended not to call Luv.Error.set_on_unhandled_exception from libraries based on Luv, but, instead, to leave the decision on how to handle exceptions up to the final application.

OCaml

Innovation. Community. Security.