std:: errc
From cppreference.net
|
Défini dans l'en-tête
<system_error>
|
||
|
enum
class
errc
;
|
(depuis C++11) | |
L'énumération délimitée
std::errc
définit les valeurs des conditions d'erreur portables qui correspondent aux codes d'erreur POSIX.
Table des matières |
Constantes membres
| Nom | Erreur POSIX équivalente |
address_family_not_supported
|
EAFNOSUPPORT
|
address_in_use
|
EADDRINUSE
|
address_not_available
|
EADDRNOTAVAIL
|
already_connected
|
EISCONN
|
argument_list_too_long
|
E2BIG
|
argument_out_of_domain
|
EDOM
|
bad_address
|
EFAULT
|
bad_file_descriptor
|
EBADF
|
bad_message
|
EBADMSG
|
broken_pipe
|
EPIPE
|
connection_aborted
|
ECONNABORTED
|
connection_already_in_progress
|
EALREADY
|
connection_refused
|
ECONNREFUSED
|
connection_reset
|
ECONNRESET
|
cross_device_link
|
EXDEV
|
destination_address_required
|
EDESTADDRREQ
|
device_or_resource_busy
|
EBUSY
|
directory_not_empty
|
ENOTEMPTY
|
executable_format_error
|
ENOEXEC
|
file_exists
|
EEXIST
|
file_too_large
|
EFBIG
|
filename_too_long
|
ENAMETOOLONG
|
function_not_supported
|
ENOSYS
|
host_unreachable
|
EHOSTUNREACH
|
identifier_removed
|
EIDRM
|
illegal_byte_sequence
|
EILSEQ
|
inappropriate_io_control_operation
|
ENOTTY
|
interrupted
|
EINTR
|
invalid_argument
|
EINVAL
|
invalid_seek
|
ESPIPE
|
io_error
|
EIO
|
is_a_directory
|
EISDIR
|
message_size
|
EMSGSIZE
|
network_down
|
ENETDOWN
|
network_reset
|
ENETRESET
|
network_unreachable
|
ENETUNREACH
|
no_buffer_space
|
ENOBUFS
|
no_child_process
|
ECHILD
|
no_link
|
ENOLINK
|
no_lock_available
|
ENOLCK
|
no_message_available
(obsolète)
|
ENODATA
|
no_message
|
ENOMSG
|
no_protocol_option
|
ENOPROTOOPT
|
no_space_on_device
|
ENOSPC
|
no_stream_resources
(obsolète)
|
ENOSR
|
no_such_device_or_address
|
ENXIO
|
no_such_device
|
ENODEV
|
no_such_file_or_directory
|
ENOENT
|
no_such_process
|
ESRCH
|
not_a_directory
|
ENOTDIR
|
not_a_socket
|
ENOTSOCK
|
not_a_stream
(obsolète)
|
ENOSTR
|
not_connected
|
ENOTCONN
|
not_enough_memory
|
ENOMEM
|
not_supported
|
ENOTSUP
|
operation_canceled
|
ECANCELED
|
operation_in_progress
|
EINPROGRESS
|
operation_not_permitted
|
EPERM
|
operation_not_supported
|
EOPNOTSUPP
|
operation_would_block
|
EWOULDBLOCK
|
owner_dead
|
EOWNERDEAD
|
permission_denied
|
EACCES
|
protocol_error
|
EPROTO
|
protocol_not_supported
|
EPROTONOSUPPORT
|
read_only_file_system
|
EROFS
|
resource_deadlock_would_occur
|
EDEADLK
|
resource_unavailable_try_again
|
EAGAIN
|
result_out_of_range
|
ERANGE
|
state_not_recoverable
|
ENOTRECOVERABLE
|
stream_timeout
(obsolète)
|
ETIME
|
text_file_busy
|
ETXTBSY
|
timed_out
|
ETIMEDOUT
|
too_many_files_open_in_system
|
ENFILE
|
too_many_files_open
|
EMFILE
|
too_many_links
|
EMLINK
|
too_many_symbolic_link_levels
|
ELOOP
|
value_too_large
|
EOVERFLOW
|
wrong_protocol_type
|
EPROTOTYPE
|
Fonctions non membres
|
(C++11)
|
crée une valeur de code d'erreur pour
errc
enum
e
(fonction) |
|
(C++11)
|
crée une condition d'erreur pour une valeur
errc
e
(fonction) |
Classes d'assistance
étend le trait de type
std::is_error_condition_enum
pour identifier les valeurs
errc
comme conditions d'erreur
(modèle de fonction) |
Exemple
Exécuter ce code
#include <filesystem> #include <fstream> #include <iomanip> #include <iostream> #include <string> #include <system_error> #include <thread> void print_error(const std::string& details, std::error_code error_code) { std::string value_name; if (error_code == std::errc::invalid_argument) value_name = "std::errc::invalid_argument"; if (error_code == std::errc::no_such_file_or_directory) value_name = "std::errc::no_such_file_or_directory"; if (error_code == std::errc::is_a_directory) value_name = "std::errc::is_a_directory"; if (error_code == std::errc::permission_denied) value_name = "std::errc::permission_denied"; std::cout << details << ":\n " << std::quoted(error_code.message()) << " (" << value_name << ")\n\n"; } void print_errno(const std::string& details, int errno_value = errno) { print_error(details, std::make_error_code(std::errc(errno_value))); } int main() { std::cout << "Detaching a not-a-thread...\n"; try { std::thread().detach(); } catch (const std::system_error& e) { print_error("Error detaching empty thread", e.code()); } std::cout << "Opening nonexistent file...\n"; std::ifstream nofile{"nonexistent-file"}; if (!nofile.is_open()) print_errno("Error opening nonexistent file for reading"); std::cout << "Reading from directory as a file...\n"; std::filesystem::create_directory("dir"); std::ifstream dir_stream{"dir"}; [[maybe_unused]] char c = dir_stream.get(); if (!dir_stream.good()) print_errno("Error reading data from directory"); std::cout << "Open read-only file for writing...\n"; std::fstream{"readonly-file", std::ios::out}; std::filesystem::permissions("readonly-file", std::filesystem::perms::owner_read); std::fstream write_readonly("readonly-file", std::ios::out); if (!write_readonly.is_open()) print_errno("Error opening read-only file for writing"); }
Sortie possible :
Detaching a not-a-thread... Error detaching empty thread: "Invalid argument" (std::errc::invalid_argument) Opening nonexistent file... Error opening nonexistent file for reading: "No such file or directory" (std::errc::no_such_file_or_directory) Reading from directory as a file... Error reading data from directory: "Is a directory" (std::errc::is_a_directory) Open read-only file for writing... Error opening read-only file for writing: "Permission denied" (std::errc::permission_denied)
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Applicable à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| LWG 3869 | C++11 |
les constantes membres
no_message_available
,
no_stream_resources
,
not_a_stream
et
stream_timeout
faisaient référence à l'API obsolète POSIX STREAMS [1] |
les a dépréciées |
- ↑ Bien que les numéros d'erreur POSIX correspondants ENODATA, ENOSR, ENOSTR et ETIME aient été marqués comme "obsolètes" dans POSIX 2017, l'API STREAMS était optionnelle et non requise pour la conformité avec la norme POSIX précédente (car les systèmes de type Unix populaires ont refusé de l'implémenter).
Voir aussi
|
(C++11)
|
contient un code d'erreur dépendant de la plateforme
(classe) |
|
(C++11)
|
contient un code d'erreur portable
(classe) |