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#

UV_E2BIG#

argument list too long

UV_EACCES#

permission denied

UV_EADDRINUSE#

address already in use

UV_EADDRNOTAVAIL#

address not available

UV_EAFNOSUPPORT#

address family not supported

UV_EAGAIN#

resource temporarily unavailable

UV_EAI_ADDRFAMILY#

address family not supported

UV_EAI_AGAIN#

temporary failure

UV_EAI_BADFLAGS#

bad ai_flags value

UV_EAI_BADHINTS#

invalid value for hints

UV_EAI_CANCELED#

request canceled

UV_EAI_FAIL#

permanent failure

UV_EAI_FAMILY#

ai_family not supported

UV_EAI_MEMORY#

out of memory

UV_EAI_NODATA#

no address

UV_EAI_NONAME#

unknown node or service

UV_EAI_OVERFLOW#

argument buffer overflow

UV_EAI_PROTOCOL#

resolved protocol is unknown

UV_EAI_SERVICE#

service not available for socket type

UV_EAI_SOCKTYPE#

socket type not supported

UV_EALREADY#

connection already in progress

UV_EBADF#

bad file descriptor

UV_EBUSY#

resource busy or locked

UV_ECANCELED#

operation canceled

UV_ECHARSET#

invalid Unicode character

UV_ECONNABORTED#

software caused connection abort

UV_ECONNREFUSED#

connection refused

UV_ECONNRESET#

connection reset by peer

UV_EDESTADDRREQ#

destination address required

UV_EEXIST#

file already exists

UV_EFAULT#

bad address in system call argument

UV_EFBIG#

file too large

UV_EHOSTUNREACH#

host is unreachable

UV_EINTR#

interrupted system call

UV_EINVAL#

invalid argument

UV_EIO#

i/o error

UV_EISCONN#

socket is already connected

UV_EISDIR#

illegal operation on a directory

UV_ELOOP#

too many symbolic links encountered

UV_EMFILE#

too many open files

UV_EMSGSIZE#

message too long

UV_ENAMETOOLONG#

name too long

UV_ENETDOWN#

network is down

UV_ENETUNREACH#

network is unreachable

UV_ENFILE#

file table overflow

UV_ENOBUFS#

no buffer space available

UV_ENODEV#

no such device

UV_ENOENT#

no such file or directory

UV_ENOMEM#

not enough memory

UV_ENONET#

machine is not on the network

UV_ENOPROTOOPT#

protocol not available

UV_ENOSPC#

no space left on device

UV_ENOSYS#

function not implemented

UV_ENOTCONN#

socket is not connected

UV_ENOTDIR#

not a directory

UV_ENOTEMPTY#

directory not empty

UV_ENOTSOCK#

socket operation on non-socket

UV_ENOTSUP#

operation not supported on socket

UV_EOVERFLOW#

value too large for defined data type

UV_EPERM#

operation not permitted

UV_EPIPE#

broken pipe

UV_EPROTO#

protocol error

UV_EPROTONOSUPPORT#

protocol not supported

UV_EPROTOTYPE#

protocol wrong type for socket

UV_ERANGE#

result too large

UV_EROFS#

read-only file system

UV_ESHUTDOWN#

cannot send after transport endpoint shutdown

UV_ESPIPE#

invalid seek

UV_ESRCH#

no such process

UV_ETIMEDOUT#

connection timed out

UV_ETXTBSY#

text file is busy

UV_EXDEV#

cross-device link not permitted

UV_UNKNOWN#

unknown error

UV_EOF#

end of file

UV_ENXIO#

no such device or address

too many links

UV_ENOTTY#

inappropriate ioctl for device

UV_EFTYPE#

inappropriate file type or format

UV_EILSEQ#

illegal byte sequence

UV_ESOCKTNOSUPPORT#

socket type not supported

UV_EUNATCH#

protocol driver not attached

API#

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.

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.

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.

New in version 1.22.0.

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.

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.

New in version 1.22.0.

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.

Changed in version 1.10.0: function declared public.