Blame docs/src/errors.rst

Packit Service 7c31a4
Packit Service 7c31a4
.. _errors:
Packit Service 7c31a4
Packit Service 7c31a4
Error handling
Packit Service 7c31a4
==============
Packit Service 7c31a4
Packit Service 7c31a4
In libuv errors are negative numbered constants. As a rule of thumb, whenever
Packit Service 7c31a4
there is a status parameter, or an API functions returns an integer, a negative
Packit Service 7c31a4
number will imply an error.
Packit Service 7c31a4
Packit Service 7c31a4
When a function which takes a callback returns an error, the callback will never
Packit Service 7c31a4
be called.
Packit Service 7c31a4
Packit Service 7c31a4
.. note::
Packit Service 7c31a4
    Implementation detail: on Unix error codes are the negated `errno` (or `-errno`), while on
Packit Service 7c31a4
    Windows they are defined by libuv to arbitrary negative numbers.
Packit Service 7c31a4
Packit Service 7c31a4
Packit Service 7c31a4
Error constants
Packit Service 7c31a4
---------------
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_E2BIG
Packit Service 7c31a4
Packit Service 7c31a4
    argument list too long
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_EACCES
Packit Service 7c31a4
Packit Service 7c31a4
    permission denied
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_EADDRINUSE
Packit Service 7c31a4
Packit Service 7c31a4
    address already in use
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_EADDRNOTAVAIL
Packit Service 7c31a4
Packit Service 7c31a4
    address not available
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_EAFNOSUPPORT
Packit Service 7c31a4
Packit Service 7c31a4
    address family not supported
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_EAGAIN
Packit Service 7c31a4
Packit Service 7c31a4
    resource temporarily unavailable
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_EAI_ADDRFAMILY
Packit Service 7c31a4
Packit Service 7c31a4
    address family not supported
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_EAI_AGAIN
Packit Service 7c31a4
Packit Service 7c31a4
    temporary failure
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_EAI_BADFLAGS
Packit Service 7c31a4
Packit Service 7c31a4
    bad ai_flags value
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_EAI_BADHINTS
Packit Service 7c31a4
Packit Service 7c31a4
    invalid value for hints
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_EAI_CANCELED
Packit Service 7c31a4
Packit Service 7c31a4
    request canceled
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_EAI_FAIL
Packit Service 7c31a4
Packit Service 7c31a4
    permanent failure
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_EAI_FAMILY
Packit Service 7c31a4
Packit Service 7c31a4
    ai_family not supported
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_EAI_MEMORY
Packit Service 7c31a4
Packit Service 7c31a4
    out of memory
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_EAI_NODATA
Packit Service 7c31a4
Packit Service 7c31a4
    no address
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_EAI_NONAME
Packit Service 7c31a4
Packit Service 7c31a4
    unknown node or service
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_EAI_OVERFLOW
Packit Service 7c31a4
Packit Service 7c31a4
    argument buffer overflow
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_EAI_PROTOCOL
Packit Service 7c31a4
Packit Service 7c31a4
    resolved protocol is unknown
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_EAI_SERVICE
Packit Service 7c31a4
Packit Service 7c31a4
    service not available for socket type
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_EAI_SOCKTYPE
Packit Service 7c31a4
Packit Service 7c31a4
    socket type not supported
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_EALREADY
Packit Service 7c31a4
Packit Service 7c31a4
    connection already in progress
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_EBADF
Packit Service 7c31a4
Packit Service 7c31a4
    bad file descriptor
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_EBUSY
Packit Service 7c31a4
Packit Service 7c31a4
    resource busy or locked
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_ECANCELED
Packit Service 7c31a4
Packit Service 7c31a4
    operation canceled
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_ECHARSET
Packit Service 7c31a4
Packit Service 7c31a4
    invalid Unicode character
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_ECONNABORTED
Packit Service 7c31a4
Packit Service 7c31a4
    software caused connection abort
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_ECONNREFUSED
Packit Service 7c31a4
Packit Service 7c31a4
    connection refused
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_ECONNRESET
Packit Service 7c31a4
Packit Service 7c31a4
    connection reset by peer
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_EDESTADDRREQ
Packit Service 7c31a4
Packit Service 7c31a4
    destination address required
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_EEXIST
Packit Service 7c31a4
Packit Service 7c31a4
    file already exists
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_EFAULT
Packit Service 7c31a4
Packit Service 7c31a4
    bad address in system call argument
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_EFBIG
Packit Service 7c31a4
Packit Service 7c31a4
    file too large
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_EHOSTUNREACH
Packit Service 7c31a4
Packit Service 7c31a4
    host is unreachable
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_EINTR
Packit Service 7c31a4
Packit Service 7c31a4
    interrupted system call
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_EINVAL
Packit Service 7c31a4
Packit Service 7c31a4
    invalid argument
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_EIO
Packit Service 7c31a4
Packit Service 7c31a4
    i/o error
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_EISCONN
Packit Service 7c31a4
Packit Service 7c31a4
    socket is already connected
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_EISDIR
Packit Service 7c31a4
Packit Service 7c31a4
    illegal operation on a directory
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_ELOOP
Packit Service 7c31a4
Packit Service 7c31a4
    too many symbolic links encountered
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_EMFILE
Packit Service 7c31a4
Packit Service 7c31a4
    too many open files
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_EMSGSIZE
Packit Service 7c31a4
Packit Service 7c31a4
    message too long
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_ENAMETOOLONG
Packit Service 7c31a4
Packit Service 7c31a4
    name too long
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_ENETDOWN
Packit Service 7c31a4
Packit Service 7c31a4
    network is down
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_ENETUNREACH
Packit Service 7c31a4
Packit Service 7c31a4
    network is unreachable
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_ENFILE
Packit Service 7c31a4
Packit Service 7c31a4
    file table overflow
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_ENOBUFS
Packit Service 7c31a4
Packit Service 7c31a4
    no buffer space available
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_ENODEV
Packit Service 7c31a4
Packit Service 7c31a4
    no such device
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_ENOENT
Packit Service 7c31a4
Packit Service 7c31a4
    no such file or directory
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_ENOMEM
Packit Service 7c31a4
Packit Service 7c31a4
    not enough memory
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_ENONET
Packit Service 7c31a4
Packit Service 7c31a4
    machine is not on the network
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_ENOPROTOOPT
Packit Service 7c31a4
Packit Service 7c31a4
    protocol not available
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_ENOSPC
Packit Service 7c31a4
Packit Service 7c31a4
    no space left on device
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_ENOSYS
Packit Service 7c31a4
Packit Service 7c31a4
    function not implemented
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_ENOTCONN
Packit Service 7c31a4
Packit Service 7c31a4
    socket is not connected
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_ENOTDIR
Packit Service 7c31a4
Packit Service 7c31a4
    not a directory
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_ENOTEMPTY
Packit Service 7c31a4
Packit Service 7c31a4
    directory not empty
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_ENOTSOCK
Packit Service 7c31a4
Packit Service 7c31a4
    socket operation on non-socket
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_ENOTSUP
Packit Service 7c31a4
Packit Service 7c31a4
    operation not supported on socket
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_EPERM
Packit Service 7c31a4
Packit Service 7c31a4
    operation not permitted
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_EPIPE
Packit Service 7c31a4
Packit Service 7c31a4
    broken pipe
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_EPROTO
Packit Service 7c31a4
Packit Service 7c31a4
    protocol error
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_EPROTONOSUPPORT
Packit Service 7c31a4
Packit Service 7c31a4
    protocol not supported
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_EPROTOTYPE
Packit Service 7c31a4
Packit Service 7c31a4
    protocol wrong type for socket
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_ERANGE
Packit Service 7c31a4
Packit Service 7c31a4
    result too large
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_EROFS
Packit Service 7c31a4
Packit Service 7c31a4
    read-only file system
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_ESHUTDOWN
Packit Service 7c31a4
Packit Service 7c31a4
    cannot send after transport endpoint shutdown
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_ESPIPE
Packit Service 7c31a4
Packit Service 7c31a4
    invalid seek
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_ESRCH
Packit Service 7c31a4
Packit Service 7c31a4
    no such process
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_ETIMEDOUT
Packit Service 7c31a4
Packit Service 7c31a4
    connection timed out
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_ETXTBSY
Packit Service 7c31a4
Packit Service 7c31a4
    text file is busy
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_EXDEV
Packit Service 7c31a4
Packit Service 7c31a4
    cross-device link not permitted
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_UNKNOWN
Packit Service 7c31a4
Packit Service 7c31a4
    unknown error
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_EOF
Packit Service 7c31a4
Packit Service 7c31a4
    end of file
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_ENXIO
Packit Service 7c31a4
Packit Service 7c31a4
    no such device or address
Packit Service 7c31a4
Packit Service 7c31a4
.. c:macro:: UV_EMLINK
Packit Service 7c31a4
Packit Service 7c31a4
    too many links
Packit Service 7c31a4
Packit Service e2ebee
.. c:macro:: UV_ENOTTY
Packit Service e2ebee
Packit Service e2ebee
    inappropriate ioctl for device
Packit Service e2ebee
Packit Service e2ebee
.. c:macro:: UV_EFTYPE
Packit Service e2ebee
Packit Service e2ebee
    inappropriate file type or format
Packit Service e2ebee
Packit Service e2ebee
.. c:macro:: UV_EILSEQ
Packit Service e2ebee
Packit Service e2ebee
    illegal byte sequence
Packit Service e2ebee
Packit Service 7c31a4
Packit Service 7c31a4
API
Packit Service 7c31a4
---
Packit Service 7c31a4
Packit Service e2ebee
.. c:macro:: UV_ERRNO_MAP(iter_macro)
Packit Service 7c31a4
Packit Service 7c31a4
    Macro that expands to a series of invocations of `iter_macro` for
Packit Service 7c31a4
    each of the error constants above. `iter_macro` is invoked with two
Packit Service 7c31a4
    arguments: the name of the error constant without the `UV_` prefix,
Packit Service 7c31a4
    and the error message string literal.
Packit Service 7c31a4
Packit Service 7c31a4
.. c:function:: const char* uv_strerror(int err)
Packit Service 7c31a4
Packit Service 7c31a4
    Returns the error message for the given error code.  Leaks a few bytes
Packit Service 7c31a4
    of memory when you call it with an unknown error code.
Packit Service 7c31a4
Packit Service 7c31a4
.. c:function:: char* uv_strerror_r(int err, char* buf, size_t buflen)
Packit Service 7c31a4
Packit Service 7c31a4
    Returns the error message for the given error code. The zero-terminated
Packit Service 7c31a4
    message is stored in the user-supplied buffer `buf` of at most `buflen` bytes.
Packit Service 7c31a4
Packit Service 7c31a4
    .. versionadded:: 1.22.0
Packit Service 7c31a4
Packit Service 7c31a4
.. c:function:: const char* uv_err_name(int err)
Packit Service 7c31a4
Packit Service 7c31a4
    Returns the error name for the given error code.  Leaks a few bytes
Packit Service 7c31a4
    of memory when you call it with an unknown error code.
Packit Service 7c31a4
Packit Service 7c31a4
.. c:function:: char* uv_err_name_r(int err, char* buf, size_t buflen)
Packit Service 7c31a4
Packit Service 7c31a4
    Returns the error name for the given error code. The zero-terminated
Packit Service 7c31a4
    name is stored in the user-supplied buffer `buf` of at most `buflen` bytes.
Packit Service 7c31a4
Packit Service 7c31a4
    .. versionadded:: 1.22.0
Packit Service 7c31a4
Packit Service 7c31a4
.. c:function:: int uv_translate_sys_error(int sys_errno)
Packit Service 7c31a4
Packit Service 7c31a4
   Returns the libuv error code equivalent to the given platform dependent error
Packit Service 7c31a4
   code: POSIX error codes on Unix (the ones stored in `errno`), and Win32 error
Packit Service 7c31a4
   codes on Windows (those returned by `GetLastError()` or `WSAGetLastError()`).
Packit Service 7c31a4
Packit Service 7c31a4
   If `sys_errno` is already a libuv error, it is simply returned.
Packit Service 7c31a4
Packit Service 7c31a4
   .. versionchanged:: 1.10.0 function declared public.