Back to Node

Error handling

deps/uv/docs/src/errors.rst

25.9.06.4 KB
Original Source

.. _errors:

Error handling

In libuv errors are negative numbered constants. As a rule of thumb, whenever there is a status parameter, or an API functions returns an integer, a negative number will imply an error.

When a function which takes a callback returns an error, the callback will never be called.

.. note:: Implementation detail: on Unix error codes are the negated errno (or -errno), while on Windows they are defined by libuv to arbitrary negative numbers.

Error constants

.. c:macro:: UV_E2BIG

argument list too long

.. c:macro:: UV_EACCES

permission denied

.. c:macro:: UV_EADDRINUSE

address already in use

.. c:macro:: UV_EADDRNOTAVAIL

address not available

.. c:macro:: UV_EAFNOSUPPORT

address family not supported

.. c:macro:: UV_EAGAIN

resource temporarily unavailable

.. c:macro:: UV_EAI_ADDRFAMILY

address family not supported

.. c:macro:: UV_EAI_AGAIN

temporary failure

.. c:macro:: UV_EAI_BADFLAGS

bad ai_flags value

.. c:macro:: UV_EAI_BADHINTS

invalid value for hints

.. c:macro:: UV_EAI_CANCELED

request canceled

.. c:macro:: UV_EAI_FAIL

permanent failure

.. c:macro:: UV_EAI_FAMILY

ai_family not supported

.. c:macro:: UV_EAI_MEMORY

out of memory

.. c:macro:: UV_EAI_NODATA

no address

.. c:macro:: UV_EAI_NONAME

unknown node or service

.. c:macro:: UV_EAI_OVERFLOW

argument buffer overflow

.. c:macro:: UV_EAI_PROTOCOL

resolved protocol is unknown

.. c:macro:: UV_EAI_SERVICE

service not available for socket type

.. c:macro:: UV_EAI_SOCKTYPE

socket type not supported

.. c:macro:: UV_EALREADY

connection already in progress

.. c:macro:: UV_EBADF

bad file descriptor

.. c:macro:: UV_EBUSY

resource busy or locked

.. c:macro:: UV_ECANCELED

operation canceled

.. c:macro:: UV_ECHARSET

invalid Unicode character

.. c:macro:: UV_ECONNABORTED

software caused connection abort

.. c:macro:: UV_ECONNREFUSED

connection refused

.. c:macro:: UV_ECONNRESET

connection reset by peer

.. c:macro:: UV_EDESTADDRREQ

destination address required

.. c:macro:: UV_EEXIST

file already exists

.. c:macro:: UV_EFAULT

bad address in system call argument

.. c:macro:: UV_EFBIG

file too large

.. c:macro:: UV_EHOSTUNREACH

host is unreachable

.. c:macro:: UV_EINTR

interrupted system call

.. c:macro:: UV_EINVAL

invalid argument

.. c:macro:: UV_EIO

i/o error

.. c:macro:: UV_EISCONN

socket is already connected

.. c:macro:: UV_EISDIR

illegal operation on a directory

.. c:macro:: UV_ELOOP

too many symbolic links encountered

.. c:macro:: UV_EMFILE

too many open files

.. c:macro:: UV_EMSGSIZE

message too long

.. c:macro:: UV_ENAMETOOLONG

name too long

.. c:macro:: UV_ENETDOWN

network is down

.. c:macro:: UV_ENETUNREACH

network is unreachable

.. c:macro:: UV_ENFILE

file table overflow

.. c:macro:: UV_ENOBUFS

no buffer space available

.. c:macro:: UV_ENODEV

no such device

.. c:macro:: UV_ENOENT

no such file or directory

.. c:macro:: UV_ENOMEM

not enough memory

.. c:macro:: UV_ENONET

machine is not on the network

.. c:macro:: UV_ENOPROTOOPT

protocol not available

.. c:macro:: UV_ENOSPC

no space left on device

.. c:macro:: UV_ENOSYS

function not implemented

.. c:macro:: UV_ENOTCONN

socket is not connected

.. c:macro:: UV_ENOTDIR

not a directory

.. c:macro:: UV_ENOTEMPTY

directory not empty

.. c:macro:: UV_ENOTSOCK

socket operation on non-socket

.. c:macro:: UV_ENOTSUP

operation not supported on socket

.. c:macro:: UV_EOVERFLOW

value too large for defined data type

.. c:macro:: UV_EPERM

operation not permitted

.. c:macro:: UV_EPIPE

broken pipe

.. c:macro:: UV_EPROTO

protocol error

.. c:macro:: UV_EPROTONOSUPPORT

protocol not supported

.. c:macro:: UV_EPROTOTYPE

protocol wrong type for socket

.. c:macro:: UV_ERANGE

result too large

.. c:macro:: UV_EROFS

read-only file system

.. c:macro:: UV_ESHUTDOWN

cannot send after transport endpoint shutdown

.. c:macro:: UV_ESPIPE

invalid seek

.. c:macro:: UV_ESRCH

no such process

.. c:macro:: UV_ETIMEDOUT

connection timed out

.. c:macro:: UV_ETXTBSY

text file is busy

.. c:macro:: UV_EXDEV

cross-device link not permitted

.. c:macro:: UV_UNKNOWN

unknown error

.. c:macro:: UV_EOF

end of file

.. c:macro:: UV_ENXIO

no such device or address

.. c:macro:: UV_EMLINK

too many links

.. c:macro:: UV_ENOTTY

inappropriate ioctl for device

.. c:macro:: UV_EFTYPE

inappropriate file type or format

.. c:macro:: UV_EILSEQ

illegal byte sequence

.. c:macro:: UV_ESOCKTNOSUPPORT

socket type not supported

.. c:macro:: UV_EUNATCH

protocol driver not attached

API

.. c:macro:: UV_ERRNO_MAP(iter_macro)

Macro that expands to a series of invocations of `iter_macro` for
each of the error constants above. `iter_macro` is invoked with two
arguments: the name of the error constant without the `UV_` prefix,
and the error message string literal.

.. c:function:: const char* uv_strerror(int err)

Returns the error message for the given error code.  Leaks a few bytes
of memory when you call it with an unknown error code.

.. c:function:: char* uv_strerror_r(int err, char* buf, size_t buflen)

Returns the error message for the given error code. The zero-terminated
message is stored in the user-supplied buffer `buf` of at most `buflen` bytes.

.. versionadded:: 1.22.0

.. c:function:: const char* uv_err_name(int err)

Returns the error name for the given error code.  Leaks a few bytes
of memory when you call it with an unknown error code.

.. c:function:: char* uv_err_name_r(int err, char* buf, size_t buflen)

Returns the error name for the given error code. The zero-terminated
name is stored in the user-supplied buffer `buf` of at most `buflen` bytes.

.. versionadded:: 1.22.0

.. c:function:: int uv_translate_sys_error(int sys_errno)

Returns the libuv error code equivalent to the given platform dependent error code: POSIX error codes on Unix (the ones stored in errno), and Win32 error codes on Windows (those returned by GetLastError() or WSAGetLastError()).

If sys_errno is already a libuv error, it is simply returned.

.. versionchanged:: 1.10.0 function declared public.