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
-
UV_EMLINK#
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.