1 2.. _errors: 3 4Error handling 5============== 6 7In libuv errors are negative numbered constants. As a rule of thumb, whenever 8there is a status parameter, or an API functions returns an integer, a negative 9number will imply an error. 10 11When a function which takes a callback returns an error, the callback will never 12be called. 13 14.. note:: 15 Implementation detail: on Unix error codes are the negated `errno` (or `-errno`), while on 16 Windows they are defined by libuv to arbitrary negative numbers. 17 18 19Error constants 20--------------- 21 22.. c:macro:: UV_E2BIG 23 24 argument list too long 25 26.. c:macro:: UV_EACCES 27 28 permission denied 29 30.. c:macro:: UV_EADDRINUSE 31 32 address already in use 33 34.. c:macro:: UV_EADDRNOTAVAIL 35 36 address not available 37 38.. c:macro:: UV_EAFNOSUPPORT 39 40 address family not supported 41 42.. c:macro:: UV_EAGAIN 43 44 resource temporarily unavailable 45 46.. c:macro:: UV_EAI_ADDRFAMILY 47 48 address family not supported 49 50.. c:macro:: UV_EAI_AGAIN 51 52 temporary failure 53 54.. c:macro:: UV_EAI_BADFLAGS 55 56 bad ai_flags value 57 58.. c:macro:: UV_EAI_BADHINTS 59 60 invalid value for hints 61 62.. c:macro:: UV_EAI_CANCELED 63 64 request canceled 65 66.. c:macro:: UV_EAI_FAIL 67 68 permanent failure 69 70.. c:macro:: UV_EAI_FAMILY 71 72 ai_family not supported 73 74.. c:macro:: UV_EAI_MEMORY 75 76 out of memory 77 78.. c:macro:: UV_EAI_NODATA 79 80 no address 81 82.. c:macro:: UV_EAI_NONAME 83 84 unknown node or service 85 86.. c:macro:: UV_EAI_OVERFLOW 87 88 argument buffer overflow 89 90.. c:macro:: UV_EAI_PROTOCOL 91 92 resolved protocol is unknown 93 94.. c:macro:: UV_EAI_SERVICE 95 96 service not available for socket type 97 98.. c:macro:: UV_EAI_SOCKTYPE 99 100 socket type not supported 101 102.. c:macro:: UV_EALREADY 103 104 connection already in progress 105 106.. c:macro:: UV_EBADF 107 108 bad file descriptor 109 110.. c:macro:: UV_EBUSY 111 112 resource busy or locked 113 114.. c:macro:: UV_ECANCELED 115 116 operation canceled 117 118.. c:macro:: UV_ECHARSET 119 120 invalid Unicode character 121 122.. c:macro:: UV_ECONNABORTED 123 124 software caused connection abort 125 126.. c:macro:: UV_ECONNREFUSED 127 128 connection refused 129 130.. c:macro:: UV_ECONNRESET 131 132 connection reset by peer 133 134.. c:macro:: UV_EDESTADDRREQ 135 136 destination address required 137 138.. c:macro:: UV_EEXIST 139 140 file already exists 141 142.. c:macro:: UV_EFAULT 143 144 bad address in system call argument 145 146.. c:macro:: UV_EFBIG 147 148 file too large 149 150.. c:macro:: UV_EHOSTUNREACH 151 152 host is unreachable 153 154.. c:macro:: UV_EINTR 155 156 interrupted system call 157 158.. c:macro:: UV_EINVAL 159 160 invalid argument 161 162.. c:macro:: UV_EIO 163 164 i/o error 165 166.. c:macro:: UV_EISCONN 167 168 socket is already connected 169 170.. c:macro:: UV_EISDIR 171 172 illegal operation on a directory 173 174.. c:macro:: UV_ELOOP 175 176 too many symbolic links encountered 177 178.. c:macro:: UV_EMFILE 179 180 too many open files 181 182.. c:macro:: UV_EMSGSIZE 183 184 message too long 185 186.. c:macro:: UV_ENAMETOOLONG 187 188 name too long 189 190.. c:macro:: UV_ENETDOWN 191 192 network is down 193 194.. c:macro:: UV_ENETUNREACH 195 196 network is unreachable 197 198.. c:macro:: UV_ENFILE 199 200 file table overflow 201 202.. c:macro:: UV_ENOBUFS 203 204 no buffer space available 205 206.. c:macro:: UV_ENODEV 207 208 no such device 209 210.. c:macro:: UV_ENOENT 211 212 no such file or directory 213 214.. c:macro:: UV_ENOMEM 215 216 not enough memory 217 218.. c:macro:: UV_ENONET 219 220 machine is not on the network 221 222.. c:macro:: UV_ENOPROTOOPT 223 224 protocol not available 225 226.. c:macro:: UV_ENOSPC 227 228 no space left on device 229 230.. c:macro:: UV_ENOSYS 231 232 function not implemented 233 234.. c:macro:: UV_ENOTCONN 235 236 socket is not connected 237 238.. c:macro:: UV_ENOTDIR 239 240 not a directory 241 242.. c:macro:: UV_ENOTEMPTY 243 244 directory not empty 245 246.. c:macro:: UV_ENOTSOCK 247 248 socket operation on non-socket 249 250.. c:macro:: UV_ENOTSUP 251 252 operation not supported on socket 253 254.. c:macro:: UV_EOVERFLOW 255 256 value too large for defined data type 257 258.. c:macro:: UV_EPERM 259 260 operation not permitted 261 262.. c:macro:: UV_EPIPE 263 264 broken pipe 265 266.. c:macro:: UV_EPROTO 267 268 protocol error 269 270.. c:macro:: UV_EPROTONOSUPPORT 271 272 protocol not supported 273 274.. c:macro:: UV_EPROTOTYPE 275 276 protocol wrong type for socket 277 278.. c:macro:: UV_ERANGE 279 280 result too large 281 282.. c:macro:: UV_EROFS 283 284 read-only file system 285 286.. c:macro:: UV_ESHUTDOWN 287 288 cannot send after transport endpoint shutdown 289 290.. c:macro:: UV_ESPIPE 291 292 invalid seek 293 294.. c:macro:: UV_ESRCH 295 296 no such process 297 298.. c:macro:: UV_ETIMEDOUT 299 300 connection timed out 301 302.. c:macro:: UV_ETXTBSY 303 304 text file is busy 305 306.. c:macro:: UV_EXDEV 307 308 cross-device link not permitted 309 310.. c:macro:: UV_UNKNOWN 311 312 unknown error 313 314.. c:macro:: UV_EOF 315 316 end of file 317 318.. c:macro:: UV_ENXIO 319 320 no such device or address 321 322.. c:macro:: UV_EMLINK 323 324 too many links 325 326.. c:macro:: UV_ENOTTY 327 328 inappropriate ioctl for device 329 330.. c:macro:: UV_EFTYPE 331 332 inappropriate file type or format 333 334.. c:macro:: UV_EILSEQ 335 336 illegal byte sequence 337 338.. c:macro:: UV_ESOCKTNOSUPPORT 339 340 socket type not supported 341 342.. c:macro:: UV_EUNATCH 343 344 protocol driver not attached 345 346API 347--- 348 349.. c:macro:: UV_ERRNO_MAP(iter_macro) 350 351 Macro that expands to a series of invocations of `iter_macro` for 352 each of the error constants above. `iter_macro` is invoked with two 353 arguments: the name of the error constant without the `UV_` prefix, 354 and the error message string literal. 355 356.. c:function:: const char* uv_strerror(int err) 357 358 Returns the error message for the given error code. Leaks a few bytes 359 of memory when you call it with an unknown error code. 360 361.. c:function:: char* uv_strerror_r(int err, char* buf, size_t buflen) 362 363 Returns the error message for the given error code. The zero-terminated 364 message is stored in the user-supplied buffer `buf` of at most `buflen` bytes. 365 366 .. versionadded:: 1.22.0 367 368.. c:function:: const char* uv_err_name(int err) 369 370 Returns the error name for the given error code. Leaks a few bytes 371 of memory when you call it with an unknown error code. 372 373.. c:function:: char* uv_err_name_r(int err, char* buf, size_t buflen) 374 375 Returns the error name for the given error code. The zero-terminated 376 name is stored in the user-supplied buffer `buf` of at most `buflen` bytes. 377 378 .. versionadded:: 1.22.0 379 380.. c:function:: int uv_translate_sys_error(int sys_errno) 381 382 Returns the libuv error code equivalent to the given platform dependent error 383 code: POSIX error codes on Unix (the ones stored in `errno`), and Win32 error 384 codes on Windows (those returned by `GetLastError()` or `WSAGetLastError()`). 385 386 If `sys_errno` is already a libuv error, it is simply returned. 387 388 .. versionchanged:: 1.10.0 function declared public. 389